..
O uso de Dependency Injection Constructor pode levar à criação de dependências cíclicas entre feijão. Por exemplo, se A tem um assunto cabeçalhos de saída precisam ser instanciado para um objeto B, mas ao mesmo tempo, o objeto B precisa de objeto, você cria uma dependência que não pode ser resolvido usando o Dependency Injection Constructor.
Em tais casos, você deve usar o Dependency Injection Setter é muito semelhante ao Constructor mas a diferença reside no fato de que as dependências são injetadas após o objeto tenha sido instanciado. Aqui está um exemplo:
public class {Bean2
GenericService GenericService privado;
setGenericService public void (GenericService genericService) {
this.genericService = genericService;
}
getGenericService GenericService pública () {
genericService retorno;
}
/ **
* A lógica de negócios .............
* /
}
nell'applicationContext. xml
<bean id="setterBean" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService" ref="genericService" /> <Bean />
Além de resolver o problema da injeção de dependência circular dipenze Setter também permite que você reconfigure o feijão em tempo de execução, por estes motivos, é o preferido para o construtor. Algumas escolas de pensamento, no entanto, dizer que o bom seria usar entrabe: Construtor para as dependências necessárias e setters para peças opcionais. É aconselhável usar o setter, pois é muito raro que existem dependências opcionais.
Além de usar a base do DOS existem outras características que oferece Spring, por exemplo, você pode injetar strings vazias ou campos nulos:
<! - VALOR NULL 1 -> <bean id="nullBean1" class="it.mrwebmaster.di.constructor.bean" factory-method="createBean"> <constructor-arg type="java.lang.Integer" value="0" /> <constructor-arg type="java.lang.String" value="" /> <constructor-arg type="it.mrwebmaster.di.constructor.GenericService"> <null/> </ constructor-arg> <Bean /> <! - VALOR NULL 2 -> <bean id="nullBean2" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService"> <null/> </ property> <Bean />
Primavera também oferece uma coleção de lista tipo de gestão, Set, Map, propriedades e através da lista de tag, jogo, mapa, e adereços:
public class {CollectionBean
private List <GenericService> beanList;
Propriedades privadas beanProps;
Privada <String> beanSet de Setembro;
Mapa privada <Integer, beanMap string>;
/ **
* A lógica do negócio ......................
* /
<GenericService> Lista getBeanList pública () {
beanList retorno;
}
pública Mapa <Integer, string> getBeanMap () {
beanMap retorno;
}
Propriedades getBeanProps pública () {
beanProps retorno;
}
<string> Set pública getBeanSet () {
beanSet retorno;
}
setBeanList public void (<GenericService> Lista beanList) {
this.beanList = beanList;
}
public void setBeanMap (Mapa beanMap string> <Integer,) {
this.beanMap = beanMap;
}
pública setBeanProps void (beanProps Properties) {
this.beanProps = beanProps;
}
setBeanSet public void (beanSet <String> Set) {
this.beanSet = beanSet;
}
}
nell'applicationContext. xml
<! - COLEÇÃO DE FEIJÃO ->
<bean id="collectionBean" class="it.mrwebmaster.di.collection.CollectionBean">
<! - LISTA ->
<property name="beanList">
<list>
<ref bean="genericService"/>
<Lista />
</ Property>
<! - PROPRIEDADES ->
<property name="beanProps">
<props>
<prop key="prop1"> valor1 </ prop>
<prop key="prop2"> valor2 </ prop>
<prop key="prop3"> valor3 </ prop>
</ Props>
</ Property>
<! - SET ->
<property name="beanSet">
<set>
<value> a </ value>
<value> b </ value>
</ Set>
</ Property>
<! - MAP ->
<property name="beanMap">
<map>
<entry key="1" value="value1" />
<Mapa />
</ Property>
<Bean />
Deixa o leitor com a profundidade de outras questões, como a fusão de coleta, os grãos de interior e colaboradores.
| |
Linux (Curso)
Guia completo para open-source do sistema. A partir de 49 €. |
| |
PHP (Curso)
Curso completo para a criação de sites dinâmicos. A partir de 49 €. |
| |
Ruby e Ruby On Rails (Curso)
Criação de software e aplicações Web com Ruby e RoR. A partir de 39 €. |