Es war ein Memo, als ich neulich selbst das Frühlings-Framework lernte. ..
Der Kernmechanismus von Spring ist IoC (Inversion der Steuerung) und AOP (aspektorientierte Programmierung).
Über IoC Wenn Sie für herkömmliche Methoden eine Instanz einer Klasse möchten, sollte der Entwickler New verwenden und diese selbst verwenden. In Bezug auf Ioc of Spring übernimmt IocContainer of Framework die gesamte Erstellung von Klasseninstanzen Entwickler können einfach direkt verwendet werden. Im Vergleich zur herkömmlichen Formel ist der Durchfluss umgekehrt, sodass es sich um eine Steuerungsumkehr handelt. Traditionell für die folgenden Klassen public class Book { private String id; private String name; private int price; } Wenn Sie eine Instanz möchten, erstellen Sie sie mit dem folgenden Neu. Book bk = new Book(); Wenn Sie es dem IoC-Container von Spring überlassen, können Sie Folgendes tun. ● Durch XML-Platzierung realisierte Muster ① Erstellen Sie ein leeres Spring Starter-Projekt ② Erstellen Sie im Ressourcenordner das folgende leere XML mit IoCbeans.xml
<Beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
</beans>
③ Mit dem Bean-Tag erstellt IoC Container eine Instanz. <bean id="book" class="learningAOP.learningAOP.bean.Book"></bean> ● id: Instanzname Klasse: Zielklasse Im folgenden Beispiel wird eine Instanz ohne Konstruktor erstellt. ④ Holen Sie sich eine Instanz ● Verwenden Sie die ID //ApplicationContextでXMLをロード ApplicationContext applicationContext = new ClassPathXmlApplicationContext("IoCbeans.xml"); //bookとのIDでインスタンスを取得 Book book = (Book) applicationContext.getBean("book"); System.out.println(book); Die Ausgabe ist unten ID: nullname: null price: 0
Die Werte jeder Eigenschaft sind alle Anfangswerte. Wenn Sie den Wert einer Eigenschaft festlegen möchten, lautet die XML-Definition Sie können es wie folgt ändern. PS: Buchklasse Getter & Setter ist erforderlich <bean id="book" class="learningAOP.learningAOP.bean.Book"> <property name="ID" value="1"></property> <property name="name" value="demo"></property> <property name="price" value="100"></property> </bean>
Ergebnis des erneuten Laufens ID: 1name: demo price: 100 ● Verwenden Sie den Klassentyp //Beanのクラスを使って、インスタンスを取得 Book book1 = applicationContext.getBean(Book.class); System.out.println(book1); Der Nachteil ist, dass bei mehreren Bean-Definitionen derselben Klasse ein Fehler auftritt. ⑤ Wenn es einen Konstruktor gibt //引数付けConstructor public Book(String id, String name, int price) { this.ID = id; this.name = name; this.price = price; } Die XML-Bean-Definition lautet wie folgt <! - Instanz mit Konstruktor erstellen-> <bean id="bookcon" class="learningAOP.learningAOP.bean.Book"> <constructor-arg name="ID" value="2"> <constructor-arg name="name" value="demo2"> <constructor-arg name="price" value="200"> </bean>
Holen Sie sich eine Instanz mit der Hauptfunktion wie folgt Book bookcon= (Book)applicationContext.getBean("bookcon"); System.out.println(bookcon); Ausgabe ist ID: 2 name: demo2 price: 200 Das Obige ist ein einfaches Instanzsteuerelement. Wenn jedoch mehrere Klassen vorhanden sind und Abhängigkeiten bestehen, Realisiere wie folgt ( In der Buchklasse gibt es Mitglieder der Klasse mit Autor, kurz gesagt, die Buchklasse hängt von der Autorenklasse ab. public class Author { private String ID; private String name; private int age; } Buchklasse ist unten public class Book { private String id; private String name; private int price; private Author author } PS: Getter & Setter hier weggelassen Definieren Sie in XML die Abhängigkeiten wie folgt <! - Autoreninstanz erstellen-> <bean id="author" class="learningAOP.learningAOP.bean.Author"> <property name="ID" value="1"> <property name="name" value="demo"> <property name="age" value="30"> </bean> <bean id="book" class="learningAOP.learningAOP.bean.Book"> <property name="ID" value="1"> <property name="name" value="demo"> <property name="price" value="100"> <! - Abhängigkeit hinzufügen-> <property name="author" ref="author"> Hier drückt ref die Abhängigkeit zwischen Klassen aus und ruft DI (Dependency Injection) auf. Dies ist ein konkreter Weg, um IoC zu realisieren. Wenn du es versuchst Book bookcon= (Book)applicationContext.getBean("book"); System.out.println(bookcon) Ausgabe ist ID: 1 name: demo price: 100 Author: ID: 1 name: demo age: 30 PS: Im neuesten Spring Boot werden Ioc & DI alle durch Anmerkungen realisiert.
Beispielquelle https://github.com/panguohua/learnSpring.git
Recommended Posts