[JAVA] Série de mémos d'auto-apprentissage Spring Framework_1

C'était un mémo quand j'ai appris le framework Spring par moi-même l'autre jour. ..

  1. Histoire et concept de base Printemps 2002, Rod Jahnson dans son chef-d'œuvre "Expert One-on-One J2EE Design and Development" Pour la première fois, j'ai soumis le concept de base de Spring. Initialement pour remplacer l'EJB, mais sur 10 ans, il aura une multitude de fonctionnalités. Il a été rendu possible et est devenu le principal cadre d'application open source de la plate-forme Java. Le module principal est le suivant   ●Spring Framework Sur la base de l'écosystème Spring, tous les autres modules s'exécutent sur Spring Framework.   ●Spring Boot Development Framework et Developer peuvent créer rapidement des applications. Intégrez facilement d'autres modules tiers (tels que MyBatis) Si vous le placez facilement, vous pouvez l'utiliser. Prend en charge le format JSON.   ●Spring Cloud Collectant des modules pour le développement distribué, Developer a ces modules Vous pouvez utiliser pour créer rapidement des microservices. L'image suivante (figure du site officiel)     undefined

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

Série de mémos d'auto-apprentissage Spring Framework_1
[Notes personnelles] À propos du framework Spring
cadre de printemps Mémo d'étude simple (2): AOP
Mémo rétrospective du printemps
Spring framework Mémo d'étude simple (1): ApplicationContext, Bean, Autowired
[Spring Framework] Division de la configuration
Mémo JJUG CCC Printemps 2018
Prise en charge multilingue de Spring Framework
1. Démarrez Spring Framework à partir de 1
Résumé de Spring Framework - À propos de DI
Notes d'utilisation de Spring Shell
Rédaction de mémo de démarrage de printemps (1)
Rédaction de mémos de démarrage de printemps (2)
Mémo de participation au printemps JJUG CCC 2018
Base de données de mémos d'étude Play Framework ①
Mémo d'utilisation de Spring Security CSRF
À propos de l'erreur de contexte Spring Framework
Mémo d'utilisation de Spring Security Run-As
Spring Security Usage Memo Method Security
Mémo d'utilisation de Spring Security Remember-Me
Mémo d'utilisation de Spring Security CORS
Test de mémo d'utilisation de Spring Security
Mémo de méthode de contrôleur de démarrage à ressort
Authentification / autorisation de mémo d'utilisation de Spring Security
◆ Spring Boot + note de construction de l'environnement gradle
Spring Framework 5.0 Résumé des principaux changements
En-tête de réponse de mémo d'utilisation de Spring Security
Mémo après le premier projet Spring-MVC-
Outils Spring Framework pour développeur Java
Gestion des sessions de mémo d'utilisation de Spring Security
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
Mémo d'utilisation de Spring Security Basic / mécanisme
Un mémo qui a touché Spring Boot
Mémo de mise à niveau de la version d'introduction approfondie du printemps
Mémo après le premier projet Spring-Database-
Contrôleur de cadre de test Spring avec Junit