..


Σύνδεσμοι διαφημιζόμενων

Container Core - Injection Εξάρτηση Constructor

Ας δούμε τώρα, από το παράδειγμα, πώς να χρησιμοποιείτε την ένεση Εξάρτηση Constructor
Δημιουργούμε φασόλι μας που εξαρτάται από μια γενική υπηρεσία:






 πακέτο it.mrwebmaster.di.constructor?









 δημόσια τάξη φασολιών {





  



 Ιδιωτικός genericService GenericService?



	

  



 ιδιωτική beanName String?





  



 / **



   



 * Κατασκευαστής



   



 * @ GenericService Παράμ



   



 * @ BeanName Παράμ



   



 * /



  



 κοινό φασόλι (GenericService genericService, String beanName) {



    



 super ()?



    



 this.genericService = genericService?



    



 this.beanName = beanName?



  



 }



	

  



 / **



   



 * Δημόσια μέθοδος



   



 * /



  



 δημόσια doit άκυρη () {



    



 System.out.println (beanName + "να κάνουν κάτι")?



    



 genericService.dosomething ()?



  



 }



	





 }



ρυθμίσετε την εξάρτηση 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"/>







 </ Φασολιών>



Όπως φαίνεται από το παράδειγμα για να χρησιμοποιήσετε την ένεση Εξάρτηση Κατασκευαστής πρέπει να χρησιμοποιήσει την ετικέτα-arg κατασκευαστή χρησιμοποιώντας το ref ή ιδιότητες αξία. Η ref Attibassi ανάγκη να περάσει ως arg ήδη instantiated nell'IoC άλλο δοχείο φασόλια, ενώ το χαρακτηριστικό τιμή χρησιμοποιείται για να περάσετε προκαθορισμένες τιμές ως συμβολοσειρές ή αριθμοί.

Στο παράδειγμα του κατασκευαστή της κλάσης δέχεται ως είσοδο ένα φασόλια GenericService και ένα String, αλλά το παράδειγμα που ήθελε να αντιστραφεί η σειρά των επιχειρημάτων για να δείξει πώς άνοιξη συνδυάζει τα επιχειρήματα με βάση τον τύπο τους.
Αυτό το είδος της συμπεριφοράς είναι μια χαρά, όταν όλα τα επιχειρήματα των διαφόρων τύπων, αλλά πώς θα καθορίσετε τη σειρά, αν τα επιχειρήματα είναι του ίδιου τύπου; Η ετικέτα-arg κατασκευαστής παρέχει το χαρακτηριστικό δείκτη που δείχνει τη σειρά με την άνοιξη με την οποία για να περάσει τις παραμέτρους.






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



  



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



  



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







 </ Φασολιών>



Μια άλλη περίπτωση μπορεί να είναι μια διφορούμενη εκείνη κατά την οποία η construttore δέχεται ως είσοδο δύο παραμέτρους, που μπορούν να εκπροσωπούνται από ένα string, όπως για παράδειγμα:






 κοινό φασόλι (GenericService genericService, String beanName, invocationTimes Integer) {



  



 super ()?



  



 this.genericService = genericService?



  



 this.beanName = beanName?



  



 this.invocationTimes = invocationTimes?







 }



και nell'applicationContext. xml





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



  



 <constructor-arg value="0" />



  



 <constructor-arg value="beanName" />



  



 <constructor-arg ref="genericService" />







 </ Φασολιών>



Στην περίπτωση αυτή, την άνοιξη από λάθος ως "0" μπορεί να είναι είτε μια σειρά ή έναν αριθμό. Για να επιλύσετε αυτό το πρόβλημα, χρησιμοποιήστε το δείκτη ή attriburo το χαρακτηριστικό τύπο ως εξής:





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







 </ Φασολιών>



Το χαρακτηριστικό κατασκευαστή-ARG μπορεί επίσης να χρησιμοποιηθεί για να περάσει τις παραμέτρους με τη μέθοδο εργοστάσιο:






 δημόσια στατική φασολιών createBean (GenericService genericService, String beanName, invocationTimes Integer) {



  



 Φασολιών β = νέα Bean (genericService, beanName, invocationTimes)?



  



 / / Να somethig .......



  



 επιστροφή β?







 }



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







 </ Φασολιών>



Άνοιξη Java Οδηγός
E-Learning
Linux (Μάθημα) Linux (Μάθημα)
Πλήρης οδηγός για την open-source σύστημα. Από 49 €.
PHP (Μάθημα) PHP (Μάθημα)
Η πλήρης σειρά μαθημάτων για τη δημιουργία δυναμικών ιστοσελίδων. Από 49 €.
Ruby και Ruby on Rails (Μάθημα) Ruby και Ruby on Rails (Μάθημα)
Δημιουργία λογισμικού και Web εφαρμογές με Ρουμπίνι και RoR. Από 39 €.
Σύνδεσμοι διαφημιζόμενων