..
Χρησιμοποιήστε την ένεση Εξάρτηση Κατασκευαστής μπορεί να οδηγήσει στη δημιουργία της κυκλικής εξαρτήσεις μεταξύ φασόλια. Για παράδειγμα, εάν ένας αποχωρών επικεφαλίδες θέματος που πρέπει να αρχικοποιείται σε ένα αντικείμενο Β, αλλά την ίδια στιγμή το αντικείμενο A B αντικείμενο ανάγκες, δημιουργεί μια εξάρτηση που δεν μπορεί να επιλυθεί χρησιμοποιώντας την ένεση Εξάρτηση Κατασκευαστής.
Σε τέτοιες περιπτώσεις πρέπει να χρησιμοποιήσετε Σέττερ Injection εξαρτήσεων είναι πολύ παρόμοια με τον Κατασκευαστή, αλλά η διαφορά έγκειται στο γεγονός ότι οι εξαρτήσεις είναι ένεση μετά από το αντικείμενο ήταν αρχικοποιείται. Εδώ είναι ένα παράδειγμα:
{Δημόσια τάξη Bean2
Ιδιωτικός genericService GenericService?
δημόσια setGenericService κενό (GenericService genericService) {
this.genericService = genericService?
}
δημόσια getGenericService GenericService () {
genericService επιστροφή?
}
/ **
* Η επιχειρηματική λογική .............
* /
}
nell'applicationContext. xml
<bean id="setterBean" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService" ref="genericService" /> </ Φασολιών>
Εκτός από την επίλυση του προβλήματος της κυκλικής Σέττερ Injection εξάρτηση dipenze μπορεί επίσης να ρυθμιστεί κατά το χρόνο εκτέλεσης τα φασόλια, για τους λόγους αυτούς, είναι προτιμότερο για τον κατασκευαστή. Ορισμένα σχολεία της σκέψης, ωστόσο, λένε ότι τα καλά θα ήταν να χρησιμοποιήσετε entrabe: Κατασκευαστής για τις απαραίτητες εξαρτήσεις και setters για αυτές τις επιλογές. Καλό θα είναι να χρησιμοποιήσετε το ρυθμιστή καθώς είναι πολύ σπάνια ότι υπάρχουν προαιρετικές εξαρτήσεις.
Εκτός από τη βασική χρήση του DI, υπάρχουν και άλλες δυνατότητες που προσφέρει άνοιξη, όπως είναι τα άδεια χορδές, ή μπορεί να χορηγηθεί null πεδία:
<-! Τιμή 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/> </ κατασκευαστή-arg> </ Φασολιών> <-! 2 τιμή NULL -> <bean id="nullBean2" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService"> <null/> </ ακινήτων> </ Φασολιών>
Άνοιξη προσφέρει επίσης μια συλλογή από λίστας τύπου διαχείρισης, Set, Map, Ιδιότητες, και μέσα από τη λίστα ετικέτα, που, χάρτη, και στηρίγματα:
{Δημόσια τάξη CollectionBean
ιδιωτική Λίστα <GenericService> beanList?
Ιδιωτικός beanProps Properties?
Ιδιωτικός <string> beanSet Σεπτέμβριο?
ιδιωτική Χάρτης <Integer, beanMap string>?
/ **
* Η επιχειρηματική λογική ......................
* /
<GenericService> GetBeanList δημόσια λίστα () {
beanList επιστροφή?
}
δημόσια Χάρτης <Integer, string> getBeanMap () {
beanMap επιστροφή?
}
Δημόσια getBeanProps Properties () {
beanProps επιστροφή?
}
<string> Set δημόσια getBeanSet () {
beanSet επιστροφή?
}
δημόσια setBeanList κενό (Λίστα <GenericService> beanList) {
this.beanList = beanList?
}
δημόσια άκυρη setBeanMap (Χάρτης beanMap string> <Integer,) {
this.beanMap = beanMap?
}
δημόσια setBeanProps κενό (Properties beanProps) {
this.beanProps = beanProps?
}
δημόσια setBeanSet κενό (Set beanSet <string>) {
this.beanSet = beanSet?
}
}
nell'applicationContext. xml
<! - ΣΥΛΛΟΓΗ BEAN ->
<bean id="collectionBean" class="it.mrwebmaster.di.collection.CollectionBean">
<! - ΚΑΤΑΛΟΓΟΣ ->
<property name="beanList">
<list>
<ref bean="genericService"/>
</ Κατάλογος>
</ Ακίνητα>
<! - ΑΚΙΝΗΤΑ ->
<property name="beanProps">
<props>
<prop key="prop1"> τιμή1 </ σφήνα>
<prop key="prop2"> τιμή2 </ σφήνα>
<prop key="prop3"> Value3 </ σφήνα>
</ Props>
</ Ακίνητα>
<-! SET ->
<property name="beanSet">
<set>
<value> να </ τιμή>
<value> β </ τιμή>
</> Ορισμός
</ Ακίνητα>
<-! ΧΑΡΤΗΣ ->
<property name="beanMap">
<map>
<entry key="1" value="value1" />
</ Map>
</ Ακίνητα>
</ Φασολιών>
Αφήνει τον αναγνώστη με το βάθος σε άλλα ζητήματα, όπως η συλλογή της συγχώνευσης, το εσωτερικό φασόλια και συνεργάτες.
| |
Linux (Μάθημα)
Πλήρης οδηγός για την open-source σύστημα. Από 49 €. |
| |
PHP (Μάθημα)
Η πλήρης σειρά μαθημάτων για τη δημιουργία δυναμικών ιστοσελίδων. Από 49 €. |
| |
Ruby και Ruby on Rails (Μάθημα)
Δημιουργία λογισμικού και Web εφαρμογές με Ρουμπίνι και RoR. Από 39 €. |