C'était un mémo quand j'ai appris le framework Spring par moi-même l'autre jour. ..
Le mécanisme de base de Spring est IoC (inversion de contrôle) et AOP (programmation orientée aspect).
À propos d'IoC Pour les méthodes traditionnelles, lorsque vous voulez une instance d'une classe, Developer devrait New et l'utiliser vous-même. En ce qui concerne Ioc of Spring, IocContainer of Framework fera toute la création des instances de classe, donc Le développeur peut simplement être utilisé directement. Par rapport à la formule traditionnelle, le flux est inversé, il s'agit donc d'une inversion de contrôle. Traditionnel, pour les classes suivantes public class Book { private String id; private String name; private int price; } Lorsque vous voulez une instance, créez-la avec le New. Book bk = new Book(); Si vous le laissez au conteneur IoC de Spring, vous pouvez effectuer les opérations suivantes. ● Modèles réalisés par placement XML ① Créez un projet Spring Starter vide ② Dans le dossier resources, créez le XML vide suivant avec 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>
③ À l'aide de la balise bean, IoC Container crée une instance. <bean id="book" class="learningAOP.learningAOP.bean.Book"></bean> ● id: nom de l'instance class: Classe cible Dans l'exemple suivant, une instance est créée sans constructeur. ④ Obtenez une instance ● Utiliser id //ApplicationContextでXMLをロード ApplicationContext applicationContext = new ClassPathXmlApplicationContext("IoCbeans.xml"); //bookとのIDでインスタンスを取得 Book book = (Book) applicationContext.getBean("book"); System.out.println(book); La sortie est ci-dessous ID: nullname: null price: 0
Les valeurs de chaque propriété sont toutes des valeurs initiales. Si vous souhaitez définir la valeur d'une propriété, la définition XML est Vous pouvez le modifier comme suit. PS: la classe de livre Getter & Setter est requise <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>
Résultat de la réexécution ID: 1name: demo price: 100 ● Utiliser le type de classe //Beanのクラスを使って、インスタンスを取得 Book book1 = applicationContext.getBean(Book.class); System.out.println(book1); L'inconvénient est que s'il existe plusieurs définitions de bean de la même classe, une erreur se produit. ⑤ Quand il y a un constructeur //引数付けConstructor public Book(String id, String name, int price) { this.ID = id; this.name = name; this.price = price; } La définition du bean XML est la suivante <! - Créer une instance avec constructeur-> <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>
Obtenez une instance avec la fonction Main comme suit Book bookcon= (Book)applicationContext.getBean("bookcon"); System.out.println(bookcon); La sortie est ID: 2 name: demo2 price: 200 Ce qui précède est un contrôle d'instance simple, mais lorsqu'il y a plusieurs classes et qu'il y a des dépendances, Réalisez comme suit ( Dans la classe Book, il y a des membres de la classe avec Author, en bref, la classe Book dépend de la classe Author. public class Author { private String ID; private String name; private int age; } La classe de livre est ci-dessous public class Book { private String id; private String name; private int price; private Author author } PS: Getter & Setter omis ici En XML, définissez les dépendances comme suit <! - Créer une instance d'auteur-> <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"> <! - Ajouter une dépendance-> <property name="author" ref="author"> Ici, ref exprime la dépendance entre les classes et appelle DI (Dependency Injection). C'est une manière concrète de réaliser l'IoC. Si vous essayez Book bookcon= (Book)applicationContext.getBean("book"); System.out.println(bookcon) La sortie est ID: 1 name: demo price: 100 Author: ID: 1 name: demo age: 30 PS: Dans le dernier démarrage de Spring, Ioc et DI sont tous réalisés par annotations.
Source de l'échantillon https://github.com/panguohua/learnSpring.git
Recommended Posts