..


Links Patrocinados

Container Core - Injeção de Dependência Construtor

Agora vamos ver, por exemplo, como usar a injeção de dependência Construtor
Nós criamos o nosso feijão que depende de um serviço genérico:






 pacote it.mrwebmaster.di.constructor;









 public class {Feijão





  



 GenericService GenericService privado;



	

  



 beanName private String;





  



 / **



   



 * Fabricante



   



 * @ Param genericService



   



 * @ Param beanName



   



 * /



  



 pública Bean (GenericService genericService, String beanName) {



    



 super ();



    



 this.genericService = genericService;



    



 this.beanName = beanName;



  



 }



	

  



 / **



   



 * Método público



   



 * /



  



 doit public void () {



    



 System.out.println (beanName + "fazer algo");



    



 genericService.dosomething ();



  



 }



	





 }



configurar dependência nell'applicationContext. xml





 <bean id="genericService" class="it.mrwebmaster.di.constructor.GenericServiceImpl" scope="singleton" />









 <bean id="constructorBean" class="it.mrwebmaster.di.constructor.bean">



  



 <constructor-arg value="beanName"/>



  



 <constructor-arg ref="genericService"/>







 <Bean />



Como pode ser visto a partir do exemplo para utilizar o Construtor de injeção de dependência deve usar o construtor de tag-arg usando o ref ou atributos de valor. O Attibassi ref necessidade de passar por arg já instanciado nell'IoC outro depósito de grãos, enquanto o atributo valor é usado para passar os valores padrão como strings ou números.

No exemplo o construtor da classe aceita como entrada um feijão GenericService e uma String, mas o exemplo que ele queria inverter a ordem dos argumentos para mostrar como Primavera combinando os argumentos de seu tipo.
Este tipo de comportamento é bom quando todos os argumentos são de tipos diferentes, mas como é que vamos especificar a ordem se os argumentos são do mesmo tipo? O construtor tag arg fornece o atributo de índice que indica a ordem na Primavera com o qual passar parâmetros.






 <bean id="constructorBean" class="it.mrwebmaster.di.constructor.bean">



  



 <constructor-arg value="beanName" index="1" />



  



 <constructor-arg ref="genericService" index="0" />







 <Bean />



Outro caso pode ser ambígua em que a construttore aceita como entrada dois parâmetros que tanto pode ser representado por uma string, por exemplo:






 pública Bean (GenericService genericService, String beanName, invocationTimes Integer) {



  



 super ();



  



 this.genericService = genericService;



  



 this.beanName = beanName;



  



 this.invocationTimes = invocationTimes;







 }



e nell'applicationContext. xml





 <bean id="constructorBean2" class="it.mrwebmaster.di.constructor.bean">



  



 <constructor-arg value="0" />



  



 <constructor-arg value="beanName" />



  



 <constructor-arg ref="genericService" />







 <Bean />



Neste caso, a primavera do erro como "0" pode ser uma string ou um número. Para resolver esse problema, use o índice ou attriburo o atributo tipo como este:





 <bean id="constructorBean2" class="it.mrwebmaster.di.constructor.bean">



  



 <constructor-arg type="java.lang.Integer" value="0" />



  



 <constructor-arg value="beanName" type="java.lang.String" />



  



 <constructor-arg ref="genericService" />







 <Bean />



O atributo construtor arg também pode ser usado para passar parâmetros para o método de fábrica:






 public static feijão createBean (GenericService genericService, String beanName, invocationTimes Integer) {



  



 Feijão b = new Bean (genericService, beanName, invocationTimes);



  



 / / Do somethig .......



  



 retorno b;







 }



nell'applicationContext. xml





 <bean id="constructorBean3" class="it.mrwebmaster.di.constructor.bean" factory-method="createBean">



  



 <constructor-arg type="java.lang.Integer" value="0" />



  



 <constructor-arg value="beanName" type="java.lang.String" />



  



 <constructor-arg ref="genericService" />







 <Bean />



Primavera Java Guia
E-Learning
Linux (Curso) Linux (Curso)
Guia completo para open-source do sistema. A partir de 49 €.
PHP (Curso) PHP (Curso)
Curso completo para a criação de sites dinâmicos. A partir de 49 €.
Ruby e Ruby on Rails (Curso) Ruby e Ruby on Rails (Curso)
Criar aplicações de software e Web com Ruby e RoR. A partir de 39 €.
Links Patrocinados