Dieser Artikel beschreibt die grundlegende Verwaltung von Spring Bean anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
1. Verwenden Sie die Setter-Methode, um die Abhängigkeitsinjektion abzuschließen
Nachfolgend finden Sie die Dateien Bean und Beans-config.xml.
öffentliche Klasse HelloBean { private String helloWord; //...Getter- und Setter-Methoden weglassen}
<?xml version="1.0" binding="UTF-8"?> <!DOCTYPE Beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans. dtd"> <beans> <bean id="helloBean" > <property name="helloWord"> <value>Hallo! Justin!</value> </property> </bean> </beans>
public class SpringDemo { public static void main(String[] args) { Resource rs = new FileSystemResource("beans-config.xml"); BeanFactory Factory = new XmlBeanFactory(rs); HelloBean hello = (HelloBean) Factory.getBean(" helloBean"); System.out.println(hello.getHelloWord()); } }
2. Verwenden Sie die Konstruktormethode, um die Injektion abzuschließen
public class HelloBean { private String name; private String helloWord; // Es wird empfohlen, eine parameterlose Konstruktionsmethode zu verwenden public HelloBean() { } public HelloBean(String name, String helloWord) { this.name = name; ; } //...Getter- und Setter-Methoden weglassen}
<?xml version="1.0" binding="UTF-8"?> <!DOCTYPE Beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans. dtd"> <beans> <bean id="helloBean" > <constructor-arg index="0"> <value>Justin</value> </constructor-arg> <constructor-arg index="1"> <value>Hallo</value> </constructor-arg> </bean> </beans>
öffentliche Klasse SpringDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext("beans-config.xml"); HelloBean hello = (HelloBean) context.getBean("helloBean"); ("Name: "); System.out.println(hello.getName()); System.out.print("Word: "); System.out.println(hello.getHelloWord());
3. Attributreferenz
public class HelloBean { private String helloWord; private Date date; //...Getter- und Setter-Methoden weglassen}
<beans> <bean id="dateBean"/> <bean id="helloBean"> <property name="helloWord"> <value>Hallo!</value> </property> <property name="date"> < ref bean="dateBean"/> </property> </bean> </beans>
öffentliche Klasse SpringDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext("beans-config.xml"); HelloBean hello = (HelloBean) context.getBean("helloBean"); (hello.getHelloWord()); System.out.print(" Es ist "); System.out.print(hello.getDate()); System.out.println("." } }
4. Automatische Bindung „byType“.
Ändern Sie die Konfigurationsdatei in „Drei“ wie folgt, um die automatische Bindung von Bean-Attributen nach Typ abzuschließen.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="byType"> <property name="helloWord"> <value>Hallo!</value> </property> </bean> </beans>
5. Automatische Bindung „byName“.
Ändern Sie die Konfigurationsdatei in „Drei“ wie folgt, um die automatische Bindung von Bean-Attributen nach Namen abzuschließen.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="byName"> <property name="helloWord"> <value>Hallo!</value> </property> </bean> </beans>
6. Automatische Bindung „Konstruktor“.
Ändern Sie die Konfigurationsdatei in „Drei“ wie folgt, um die automatische Bindung von Bean-Attributen entsprechend der Konstruktionsmethode abzuschließen. Beim Einrichten einer Abhängigkeitsbeziehung versucht der Spring-Container, den Bean-Instanztyp im Container und den Parametertyp im zugehörigen Konstruktor zu vergleichen. Wenn dies der Fall ist, wird der Konstruktor zum Erstellen des Bean-Beispiels verwendet . Wenn es nicht gebunden werden kann, wird eine org.springframework.beans.factory.UnsatisfiedDependencyException-Ausnahme ausgelöst.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="constructor"> <property name="helloWord"> <value>Hallo!</value> </property> </bean> </beans>
6. Automatische Bindung „autodetect“.
Ändern Sie die Konfigurationsdatei in „Drei“ wie folgt, um die automatische Bindung von Bean-Attributen abzuschließen. Diese automatische Bindung bedeutet, dass Spring versucht, den Konstruktor für die Einrichtung von Abhängigkeiten zu verwenden. Wenn dies nicht funktioniert, versuchen Sie, byType zu verwenden Klasse, um Abhängigkeiten festzulegen.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="autodetect"> <property name="helloWord"> <value>Hallo!</value> </property> </bean> </beans>
7. Methode zur Abhängigkeitsprüfung
Da es bei der automatischen Bindung keine Möglichkeit gibt, eindeutig zu erkennen, ob jedes Attribut aus der Definitionsdatei festgelegt wurde, können Sie bei Verwendung des <bean>-Tags die Abhängigkeitsprüfung festlegen, um sicherzustellen, dass sie tatsächlich festgelegt ist. Abhängigkeitsprüfung“ gibt es vier Methoden zur Abhängigkeitsprüfung: einfach, Objekte, alle und keine.
einfach: Prüft nur, ob die Eigenschaften einfacher Typen (wie primitive Datentypen oder String-Objekte) Abhängigkeiten vervollständigen.
Objekte: Prüfen Sie, ob die Eigenschaften des Objekttyps die Abhängigkeit vervollständigen.
all: Überprüfen Sie, ob alle Attribute Abhängigkeiten vervollständigen.
none: Die Einstellung ist der Standardwert, der angibt, dass Abhängigkeiten nicht überprüft werden.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="autodetect" dependeny-check="all"> <property name="helloWord"> <value>Hallo!</value> < /property> </bean> </beans>
8. Sammlungsobjektinjektion
Bei Sammlungsobjekten wie Arrays, Listen, Mengen und Karten müssen einige Objekte vor der Injektion in die Sammlung eingefügt werden. Wenn die Sammlungsobjekte dann in die erforderlichen Beans eingefügt werden, können sie auch automatisch vom IoC-Container von Spring verwaltet oder generiert werden. Sammlungsobjekte und vollständige Abhängigkeitsinjektion.
public class SomeBean { private String[] someStrArray; private List someList; private Map someMap() { return someStrArray(String[] someStrArray) { this.someStrArray = someStrArray; } public Some[] getSomeObjArray() { return someObjArray } public void setSomeObjArray(Some[] someObjArray) { this.someObjArray = someObjArray; } public List getSomeList() { return someList; } public void setSomeList(List someList) { this.someList = someList; } public void setSomeMap(Map someMap) { this.someMap = someMap } }public class; Some { private String name; public String getName() { return name;
<?xml version="1.0" binding="UTF-8"?> <!DOCTYPE Beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans. dtd"> <beans> <bean id="some1"> <property name="name"> <value>Justin</value> </property> </bean> <bean id="some2"> <property name="name"> <value>momor</value> </property> </bean> <bean id="someBean"> <property name="someStrArray"> <list> < value>Hallo</value> <value>Willkommen</value> </list> </property> <property name="someObjArray"> <list> <ref bean="some1"/> <ref bean="some2"/> </list> </property> <property name="someList"> <list> <value>ListTest</value> <ref bean="some1"/> <ref bean="some2" /> </list> </property> <property name="someMap"> <map> <entry key="MapTest"> <value>Hallo! Justin!</value> </entry> <entry key="someKey1 "> <ref bean="some1"/> </entry> </map> </property> </bean> </beans>
public class SpringDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "beans-config.xml"); SomeBean someBean = (SomeBean) context.getBean("someBean"); Stateful Dependency Injection-Objekt String[] strs = (String[]) someBean.getSomeStrArray(); Some[] somes = (Some[]) someBean.getSomeObjArray(); for(int i = 0; i < strs.length; i++) { System.out.println(strs[i] + "," + somes[i].getName() ); } // Listentyp-Abhängigkeitsinjektionsobjekt abrufen System.out.println(); List someList = (List) someBean.getSomeList(); someList.size(); i++) { System.out.println(someList.get(i)} // Holen Sie sich das Map-Typ-Abhängigkeitsinjektionsobjekt System.out.println(); Map someMap = (Map) someBean.getSomeMap (); System.out.println(someMap.get("MapTest")); }
Ich hoffe, dass dieser Artikel für alle in der Java-Programmierung hilfreich sein wird.