..


Sponsored Links

Core-Container - Constructor Dependency Injection

Nun wollen wir sehen, durch Beispiel, wie man die Constructor Dependency Injection verwenden
Wir erstellen unsere Bean, die auf einem generischen Dienst abhängt:






 it.mrwebmaster.di.constructor Paket;









 public class Bean {





  



 Privat GenericService genericService;



	

  



 private String beanName;





  



 / **



   



 * Hersteller



   



 * @ Param genericService



   



 * @ Param beanName



   



 * /



  



 öffentlichen Bean (GenericService genericService, String beanName) {



    



 super ();



    



 this.genericService = genericService;



    



 this.beanName = beanName;



  



 }



	

  



 / **



   



 * Öffentliche Methode



   



 * /



  



 public void doit () {



    



 System.out.println (beanName + "etwas zu tun");



    



 genericService.dosomething ();



  



 }



	





 }



configure Abhängigkeit 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>



Wie aus dem Beispiel zu sehen wäre, die Nutzung der Constructor Dependency Injection muss die Tag-arg-Konstruktor mit dem ref oder Wert-Attribute. Die ref ATTIBASSI müssen als arg bereits instanziiert nell'IoC anderen Bohnenbehälter passieren, während der Wert-Attribut wird verwendet, um die Standardwerte als Zeichenketten oder als Zahlen übergeben.

Im Beispiel wird der Konstruktor der Klasse nimmt als Eingabe eine GenericService Bohnen und einem String, aber das Beispiel wollte er die Reihenfolge der Argumente umkehren, um zu zeigen, wie Spring Argumente Kombination durch ihren Typ.
Diese Art von Verhalten ist in Ordnung, wenn alle Argumente der verschiedenen Arten sind, aber wie können wir die Reihenfolge festlegen, wenn die Argumente vom selben Typ sind? Das Tag-arg Konstruktor bietet die Index-Attribut, dass die Bestellung im Frühjahr mit der Übergabe von Parametern an zeigt.






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



  



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



  



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







 </ Bean>



Ein anderer Fall könnte eine zweideutige, in dem die construttore als Eingabe akzeptiert zwei Parameter, die sowohl durch eine Zeichenfolge dargestellt werden kann, zum Beispiel:






 öffentlichen Bean (GenericService genericService, String beanName, invocationTimes Integer) {



  



 super ();



  



 this.genericService = genericService;



  



 this.beanName = beanName;



  



 this.invocationTimes = invocationTimes;







 }



und nell'applicationContext. xml





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



  



 value = "0" <constructor-arg />



  



 <constructor-arg value="beanName" />



  



 <constructor-arg ref="genericService" />







 </ Bean>



In diesem Fall kann aus Irrtum als "0" ein String oder eine Zahl sein. Dieses Problem zu beheben, verwenden Sie den Index oder attriburo das type-Attribut wie folgt aus:





 <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>



Das Attribut constructor-arg kann auch verwendet werden, um Parameter an die Factory-Methode übergeben werden:






 public static Bohne createBean (GenericService genericService, String beanName, invocationTimes Integer) {



  



 Bean b = new Bean (genericService, beanName, invocationTimes);



  



 / / Do somethig .......



  



 Rückkehr 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>



Spring Java-Führer
E-Learning
Linux (Kurs) Linux (Kurs)
Ein vollständiger Reiseführer von Open-Source-System. Von 49 €.
PHP (Kurs) PHP (Kurs)
Vollständige natürlich für die Erstellung dynamischer Websites. Von 49 €.
Ruby und Ruby on Rails (Kurs) Ruby und Ruby on Rails (Kurs)
Neues Software-und Web-Anwendungen mit Ruby und RoR. Von 39 €.
Sponsored Links