In Frühlingscontainer gibt es zusätzlich zum Einrichten von Abhängigkeiten durch <Ref> einige besondere Beziehungen zwischen den beiden Bohnen.
1 Erbe
Im objektorientierten Programmierprinzip kann die übergeordnete Klasse eingeführt werden, um den doppelten Code zu beseitigen, wenn mehrere Klassen dieselben Methoden und Eigenschaften aufweisen. Wenn im Frühjahrscontainer mehrere Bohnen dieselben Konfigurationsinformationen haben, können wir eine übergeordnete Bean definieren, sodass die untergeordnete Bohne die Konfigurationsinformationen der übergeordneten Bean automatisch erbt.
<!-übergeordnete Bean-> <bean id = "AbstractBook" p: name = "veil" Abstract = "true"> </bean> <!-Child Bean-> <bean id = "book1" p: press = "Chongqing Publishing House" Parent = "AbstractBook"/> <bean id = "book2" p: press = "shanghai translation publing
Im Allgemeinen besteht die Funktion der übergeordneten Bean darin, die Konfiguration der untergeordneten Bohne zu vereinfachen, sodass sie auf eine abstrakte Klasse eingestellt ist (Abstract = "True"). Wenn die übergeordnete Bohne hier nicht auf eine abstrakte Klasse eingestellt ist, wird der Federbehälter die übergeordnete Bohne instanziiert.
2 Vorabhängige
Im Allgemeinen wird <Ref> verwendet, um Abhängigkeiten zwischen Bohnen zu etablieren. Frühlingscontainer sind für die Verwaltung dieser Beziehungen verantwortlich. Bei der Instanziierung einer Bohne stellt der Container sicher, dass alle Bohnen auf die Bohne abhängen, die die Initialisierungsarbeiten abgeschlossen haben.
In einigen Fällen sind die Abhängigkeiten zwischen Bohnen jedoch nicht so offensichtlich.
Nehmen wir in diesem Szenario an, ein System legt einige Systemparameter (z. B. die Gültigkeitsdauer der Kennwort, die Aktivierung der Überwachung usw.) fest, und diese Startparameter werden verwendet, um die Betriebslogik des Systems zu steuern. Wir verwenden eine Einstellungsklasse, um diese Parameter darzustellen:
öffentliche Klasseneinstellungen { / ** * Ablaufzeit für Kennwort (Einheit: Tage) * / public static int pass_timeout = 30; / *** ob die Überwachung aktiviert werden soll*/ public static boolean is_monitor = false;}Hier setzen wir Standardwerte für diese Parameter. Das System verfügt außerdem über ein administratives Backend, durch das Administratoren diese Systemparameter anpassen und in der Datenbank speichern können. Wenn die Anwendung startet, müssen diese Systemparameter daher aus der Datenbank geladen werden:
öffentliches Klassensystem {public System () {init (); } /*** Initialisierung* /private void init () {// Angenommen, diese Werte stammen aus den Datenbankeinstellungen.Pass_timeout = 20; Setts.is_monitor = true; }}Das System verfügt über einen Kennwort -Ablauf -Manager, mit dem eine zeitgesteuerte Aufgabe erstellt wird, um festzustellen, ob das Kennwort basierend auf den [Anzahl der Tage, an denen das Kennwort abgelaufen ist] in den Systemparametern abläuft:
public class passmanager {int timeout; public passmanager () {timeout = settings.pass_timeout; timerTask (); } / *** zeitgesteuerte Aufgabe, um festzustellen, ob das Kennwort abläuft }}Obwohl PassManager nicht direkt auf Einstellungen angewiesen ist, erwartet Passmanager logischerweise, dass das System initialisierte Systemparameter vor dem Start lädt.
Im Frühjahr können Sie die Vorabhängigkeitsbohne einer Bohne durch die Abhängigkeit von der Abhängigkeit von der Abhängigkeit von der Abhängigkeit ausdrücklich angeben, um sicherzustellen, dass die Vorabhängigkeitsbohne dieser Bohne vor der Instanziierung geladen wurde.
<bean id = "System"/> <bean id = "Manager" hängt von "System"/> ab
Wenn das Präfix von mehreren Bohnen abhängt, kann der Bean -Name durch Kommas, Räume oder Semikolons konfiguriert werden.
3 Zitat -ID
Angenommen, eine Bohne muss sich auf den ID -Wert (Beanname) einer anderen Bohne beziehen. Dies wird im Allgemeinen verwendet, um während der Laufzeit eine weitere Bohne durch die Methode GetBean (Beanname) in der Bean zu erhalten.
Es kann so konfiguriert werden:
<bean id = "Autor"/> <bean id = "book" p: Authorid = "Autor"/>
Autorid -Attribut in Buch hinzugefügt:
/** * Autor Bean ID */private String Authorid;
Obwohl es in dieser wörtlichen Form festgelegt werden kann, gibt es keine wirkliche Referenzbeziehung zwischen den beiden. Daher wird der Konfigurationsfehler nur dann gefunden, wenn der spezifische Anruf aufgerufen wird.
Spring liefert das <Dref> Element -Tag, das den Namen einer anderen Bean über <Dref> verweist. Wenn der Container beginnt, wird die Richtigkeit der Referenzbeziehung überprüft und falsche Konfigurationsinformationen finden Sie im Voraus.
<bean id = "author10"/> <bean id = "book10"> <property name = "authorid"> <idref bean = "author10"/> </property> </bean>
Wenn ein Konfigurationsfehler auftritt, wird eine BeanDefinitionStoreException beim Start des Federbehälters geworfen, und der XML -Parser des IDE wird auch im Voraus Referenzfehler ermittelt. Daher wird empfohlen, das <Dref> -Element -Tag zu verwenden, um die ID zu referenzieren.
Zusammenfassen
Die oben genannten ist die besondere Beziehung zwischen den vom Herausgeber vorgelegten Springbohnen. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht. Der Herausgeber wird Ihnen rechtzeitig antworten!