Bevor Sie diesen Artikel lesen, können Sie sich zunächst auf den Artikel " Einfaches Verständnis von Spring's IOC und AOP- und Code -Beispielen " beziehen, um im Frühjahr etwas über IOC und AOP zu erfahren. Kommen wir zum Thema. In diesem Artikel wird im Frühling Java -Bohnen definiert und geladen.
Geschäftsszenarien
Es ist auch ein Beispiel für Menschen, die fahren. Definieren Sie zuerst eine Autosschnittstelle und zwei implementieren Benz und BMW und definieren Sie dann eine Personklasse, die von der Autosominenz anhängt.
public interface Car {void go ();} öffentliche Klasse Benz implementiert Car {public void go () {System.out.println ("Benz Go ..."); }} public class bmw implementiert car {public void go () {System.out.println ("bmw go ..."); }} public class Person {String name = ""; Auto Car = Null; public Car getCar () {return Car; } public void setCar (Car Car) {this.car = car; } public Person (String -Name) {this.name = name; } public void Drive () {System.out.println (Name+"fährt ..."); Ladung(); }}In der Personklasse können wir sehen, dass das Autoobjekt ein abhängiges Objekt dieser Klasse ist und durch eine Konstruktor -Methode in die Personklasse injiziert werden muss. Der obige Code hat immer noch keinen Schatten des Frühlings. Mal sehen, wie der Frühling es injiziert.
Fügen Sie Frühlingsabhängigkeiten hinzu
Heutzutage gelten viele Projekte für Maven, um Abhängigkeiten zu verwalten, und das gleiche gilt für dieses Projekt. Ich werde pom.xml einen Abhängigkeitsknoten hinzufügen
<Depepecy> <GroupId> org.springFramework </GroupID> <artifactId> Spring-Core </artifactId> <version> 3.2.6.Release </Version> </abhängig> <abhängigkeit> <GroupId> org.springFramework </Groupid> <artifactid> Spring-Anscancen </artifactId> <Verycl. <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.6.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.6.RELEASE</version></dependency><dependency> <gruppe> org.springFramework </gruppeId> <artifactId> Spring-Context-Support </artifactId> <version> 3.2.6.Release </Version> </abhängig>
Legen Sie diese Abhängigkeitsknoten in den Abhängigkeitsknoten der POM.xml -Datei ein, und Eclipse lädt die entsprechenden Pakete automatisch an den Standardpunkt herunter.
Manuell definieren und zusammenstellen Bohnen
Erstellen Sie eine neue XML -Datei namens bean.xml im Stammverzeichnis des Projekts mit dem folgenden Inhalt:
<? value = "tom" /> <Eigenschaft name = "car" ref = "car" /> < /bean> < /beans>
Die obige XML -Datei definiert zunächst eine Bohne mit ID als Auto und eine Bohne mit ID als Tom. Das Auto ist eine Abhängigkeit von Tom und wird manuell in das Autoattribut von Tom durch <Eigenschaft name = "co" ref = "car" /> versammelt.
Das Verhalten der Aufstellung kollaborativer Beziehungen zwischen Anwendungsobjekten wird als Verkabelung bezeichnet, was auch die Essenz der Abhängigkeit von der Objektinjektion ist.
Als nächstes instanziieren wir ein Anwendungskontextobjekt in der Hauptmethode und erhalten den Tom -Knoten in der Bohne.
public class App {public static void main (String [] args) {applicationContext context = new classMlMlApplicationContext ("bean.xml"); Person tom = (Person) context.getbean ("tom"); tom.drive (); }}Führen Sie das Programm aus und das Ausgabeergebnis ist:
Tom fährt ... BMW gehen ...
Automatische Montage
Wiederholen Sie es erneut, dass das Verhalten der Erstellung einer kollaborativen Beziehung zwischen Anwendungsobjekten als Verkabelung bezeichnet wird, anstatt das Objekt zu instanziieren. In der obigen XML -Datei habe ich das Abhängigkeitsobjekt von <Eigenschaft name = "car" ref = "car" /> zusammengestellt, aber mit der kontinuierlichen Entwicklung der Anwendung wird die XML -Konfigurationsdatei definitiv immer komplexer. Die Art und Weise, wie wir Bohnen mit dem ID -Auto durch Ref = "Car" in Verbindung bringen, hat begonnen, dahinter zurückzubleiben. Als nächstes werde ich vorstellen, wie der Frühling automatische Montagebohnen implementiert.
Arten der automatischen Montage
Der Frühling hat vier Montagestrategien. Um die Komplexität dieses Artikels zu verringern, werde ich zwei häufig verwendete Strategien einführen, die BYNAME -Methode und die Bytype -Methode. Wie der Name schon sagt, besteht die BYNAME -Methode darin, zu sehen, ob der Name des Attributs und die ID der Bohne gleich sind. In diesem Beispiel verfügt die Personklasse über ein Attribut namens Car. Wenn das Attribut der Klasse oder Änderung auf die automatische Montage eingestellt ist und die Montage -Richtlinie von Name lautet, sucht Spring nach einer Bohne mit ID -Auto (muss gleicher Name sein). Die ByType -Methode besteht darin, zu vergleichen, ob die Typen gleich sind. In diesem Beispiel, wenn das Autoattribut der Klasse oder Personenklasse auf automatische Weise festgelegt ist und die Montagerichtlinie Bytype ist. Da das Autoattribut einen Automobiltyp ist, sucht die Frühling bei Auto-Assembly nach Bohnen vom Typ Autos oder seiner Unterklasse.
Verwenden Sie XML, um die automatische Montage zu implementieren
Als nächstes werde ich den Code ändern und die XML -Konfigurationsmethode verwenden, um die automatische Montage zu erreichen.
<? <constructor-arg value = "tom"/> </bean> </beans>
Die Personklasse erfordert keine Änderung.
Zuerst habe ich das <propertyName = "car" ref = "car"/> codeszeile entfernt, weil es ein manueller Weg ist. Anschließend füge ich der Bean mit ID eine Eigenschaft autodire = "byname" hinzu und stelle sie so ein, dass die Abhängigkeit automatisch mit Namen zusammengestellt wird. Bei der Erlangung von Personenobjekten haben alle Eigentumsnamen der Person besondere Bedeutungen. Spring überwachte ein anderes Attribut namens Car in der Personklasse und fand eine Bean mit ID -Auto in der Konfigurationsdatei, sodass es automatisch zum Autoattribut der Person zusammengestellt wurde.
Automatische Montage durch Annotation
Wir stellen die folgenden Änderungen an bean.xml vor
<? id = "tom"> <constructor-arg value = "tom"/> </bean> </beans>
Löschen Sie ein Attribut autoWire = "Byname" von Bohnen mit ID Tom und fügen Sie dann ein Attribut für Standard-Autowire = "Byname" zu den Knotenbohnen hinzu, um den Standardwert der automatischen Montagemethode aller in der Datei definierten Bohnen auf Byname festzulegen. Nehmen Sie anschließend einige Änderungen an der Personklasse vor und fügen Sie der Setter -Methode des Autos @autowired Annotation hinzu, um die Feder zu benachrichtigen, um die Eigenschaft automatisch zusammenzustellen. Wiederholen Sie den Code und die Ausgabergebnisse bleiben unverändert.
@AutowiredPublic void setCar (Auto Car) {this.car = car;}Wenn Sie die automatische Montage durch Annotationen implementieren, müssen Sie zuerst die Standard -automatische Montagemethode auf dem Stamm der Beans einstellen. Anschließend müssen Sie das Autowire -Attribut für jede Bean nicht konfigurieren, die automatisch in der Konfigurationsdatei in der Konfigurationsdatei (falls die Methode inkonsistent mit der Standardeinstellung ist). Die Annotationsmethode ist empfindlicher und kann die Attributniveau der Beans steuern, die automatisch zusammengestellt werden müssen.
In allen obigen Code verwenden wir die Klasse org.zdk.springProj1.bmw als Abhängigkeit der Personklasse. Wenn die Personenklasse aufgrund der geschäftlichen Anforderungen keinen BMW fahren muss, muss die Konfiguration in org.zdk.springProj1.benz geändert werden, ohne Java -Code zu ändern. Dies ist die Kraft des Frühlings als IOC -Behälter.
Zusammenfassen
Das obige ist die detaillierte Erklärung der Frühlingsdefinitions- und Montagebohnen in diesem Artikel. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Seite verweisen:
Java Spring Annotation Configuration Bean Instance Code Analyse
Detaillierte Erläuterung des Lebenszyklus der Frühlingskonfigurationsverwendung
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!