..
Utilice la inyección de dependencia Constructor puede conducir a la creación de dependencias cíclicas entre los granos. Por ejemplo, si un tema saliente encabezados necesidad de crear una instancia de un objeto B, pero al mismo tiempo, el objeto necesita un objeto B, se crea una dependencia que no pueden ser resueltos con la inyección de dependencia Constructor.
En estos casos, debe utilizar inyección de setter de dependencia es muy similar a la del constructor, pero la diferencia radica en el hecho de que las dependencias se inyectan después de que el objeto se crea una instancia. He aquí un ejemplo:
{Public Bean2 clase
GenericService GenericService privado;
setGenericService public void (GenericService GenericService) {
this.genericService = GenericService;
}
getGenericService GenericService pública () {
GenericService retorno;
}
/ **
* La lógica de negocio .............
* /
}
nell'applicationContext. xml
<bean id="setterBean" class="it.mrwebmaster.di.setter.Bean2"> propiedad> name="genericService" ref="genericService" /> </ Bean>
Además de resolver el problema de la inyección de dependencia dipenze circular Setter también puede ser reconfigurado en tiempo de ejecución de los granos, por estas razones, se prefiere el Constructor. Algunas escuelas de pensamiento, sin embargo, dicen que lo bueno sería utilizar entrabe: Constructor de las dependencias necesarias y set para esas opciones. Es aconsejable usar la incubadora, ya que es muy raro que hay dependencias opcionales.
Además el uso básico de DI, hay otras características que Spring ofrece, tales como cadenas vacías, o se puede inyectar 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> <- 2 Valor NULL -> <bean id="nullBean2" class="it.mrwebmaster.di.setter.Bean2"> propiedad> name="genericService"> <null/> </ propiedad> </ Bean>
La primavera también ofrece una colección de Gestión de listas de tipo, Set, Map, en Propiedades y, a través de la lista de etiquetas set,, el mapa y accesorios:
{Public CollectionBean clase
Lista privada <GenericService> beanList;
BeanProps propiedades privadas;
Privado <String> beanSet de septiembre;
Mapa privado <Integer, beanMap <cadena;
/ **
* La lógica empresarial ......................
* /
<GenericService> GetBeanList pública la lista () {
beanList retorno;
}
Mapa pública <Integer, <cadena getBeanMap () {
beanMap retorno;
}
GetBeanProps propiedades públicas () {
beanProps retorno;
}
GetBeanSet <String> público conjunto () {
beanSet retorno;
}
setBeanList public void (Lista <GenericService> beanList) {
this.beanList = beanList;
}
public void setBeanMap (Mapa beanMap <cadena <Integer,) {
this.beanMap = beanMap;
}
setBeanProps public void (beanProps Propiedades) {
this.beanProps = beanProps;
}
setBeanSet public void (beanSet Set <String>) {
this.beanSet = beanSet;
}
}
nell'applicationContext. xml
<- BEAN COLECCIÓN ->
<bean id="collectionBean" class="it.mrwebmaster.di.collection.CollectionBean">
<- LISTA ->
propiedad> name="beanList">
<list>
<ref bean="genericService"/>
</ List>
</ Property>
<- Propiedades ->
propiedad> name="beanProps">
<props>
<prop key="prop1"> valor1 </ prop>
<prop key="prop2"> valor2 </ prop>
<prop key="prop3"> valor3 </ prop>
</ Atrezzo>
</ Property>
<- SET ->
propiedad> name="beanSet">
<set>
<valor> a </ value>
<valor> b </ value>
</> Configurar
</ Property>
<- MAP ->
propiedad> name="beanMap">
<map>
<entry key="1" value="value1" />
</ Map>
</ Property>
</ Bean>
Se deja al lector con la profundidad en otros temas tales como la recolección de la fusión, los granos internos y colaboradores.
| |
Linux (Curso)
Guía completa de código abierto del sistema. A partir de 49 €. |
| |
PHP (Curso)
Ciclo completo para la creación de sitios Web dinámicos. A partir de 49 €. |
| |
Ruby y Ruby on Rails (Curso)
Crear aplicaciones de software y la Web con Ruby y RoR. A partir de 39 €. |