[Technologie Spring] Architecture Spring
[Technologie Spring] Cas d'entrée IOC et DI Spring
[Technologie Spring] Configuration et exemples de bean Spring
[Technologie Spring] Injection de dépendance Spring (Configuration DI)
[Technologie Spring] Gestion de la configuration des ressources tierces Spring
[Technologie Spring ] Spring Container Technology
[Spring Technology] Spring Annotation Development
[Spring Technology] Spring Integration Mybatis&Junit Unit Test
[Spring Technology] Spring AOP
[Spring Technology] Spring Transaction Management
Boîtier d'entrée IOC et DI
1. Cas d'entrée au CIO
problème d'importation
Quel est le rôle de l'attribut id et de l'attribut class dans la balise <bean> ?
1.1 Analyse des idées de cas
- gérer quoi ? (Service et Dao)
- Comment informer le conteneur IOC de l'objet géré ? (fichier de configuration)
- Comment obtenir le conteneur IoC lorsque l'objet géré est remis au conteneur IoC ? (interface)
- Une fois que le conteneur IOC l'a obtenu, comment obtenir le haricot du conteneur ? (méthode des interfaces)
- Quelles coordonnées importer avec Spring ? (pom.xml)
1.2 Étapes de mise en œuvre
【第一步】导入Spring坐标
【第二步】定义Spring管理的类(接口)
【第三步】创建Spring配置文件,配置对应类作为Spring管理的bean对象
【第四步】初始化IOC容器(Spring核心容器/Spring容器),通过容器获取bean对象
1.3 Code d'implémentation
[Étape 1] Importer les coordonnées du printemps
<dependencies>
<!--导入spring的坐标spring-context,对应版本是5.2.10.RELEASE-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
[Étape 2] Définir les classes gérées par Spring (interfaces)
- Interface BookDao et classe d'implémentation BookDaoImpl
public interface BookDao {
public void save();
}
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ...");
}
}
- Interface BookService et classe d'implémentation BookServiceImpl
public interface BookService {
public void save();
}
public class BookServiceImpl implements BookService {
private BookDao bookDao = new BookDaoImpl();
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
[Étape 3] Créer un fichier de configuration Spring et configurer la classe correspondante en tant qu'objet bean géré par Spring
- Définissez le fichier de configuration applicationContext.xml et configurez BookServiceImpl
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
bean标签:表示配置bean
id属性:表示给bean起名字
class属性:表示给bean定义类型
-->
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"></bean>
</beans>
Remarque : Lorsque le bean est défini, l'attribut id ne peut pas être répété dans le même contexte (dans le conteneur IOC)
[Étape 4] Initialiser le conteneur IOC (Spring core container/Spring container) et obtenir l'objet Bean via le conteneur
public class App {
public static void main(String[] args) {
//1.创建IoC容器对象,加载spring核心配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//2 从IOC容器中获取Bean对象(BookService对象)
BookService bookService= (BookService)ctx.getBean("bookService");
//3 调用Bean对象(BookService对象)的方法
bookService.save();
}
}
1.4 Résultats en cours d'exécution
2. Boîtier d'entrée DI
problème d'importation
Quel est le rôle de l'attribut name et de l'attribut ref dans la balise <property> ?
2.1 Analyse des idées de cas d'entrée DI
- Gérer les beans en fonction de l'IOC
- Les objets Dao créés sous forme de nouveau sont-ils conservés dans le Service ? (Non)
- Comment les objets Dao nécessaires au Service entrent-ils dans le Service ? (indiquer la méthode)
- Comment décrire la relation entre Service et Dao ? (configuration)
2.2 Étapes de mise en œuvre
【第一步】删除使用new的形式创建对象的代码
【第二步】提供依赖对象对应的setter方法
【第三步】配置service与dao之间的关系
2.3 Code d'implémentation
[Étape 1] Supprimez le code qui crée des objets sous la forme de nouveaux
public class BookServiceImpl implements BookService {
private BookDao bookDao; //【第一步】删除使用new的形式创建对象的代码
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
[Étape 2] Fournir la méthode setter correspondant à l'objet dépendant
public class BookServiceImpl implements BookService {
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
//【第二步】提供依赖对象对应的setter方法
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
[Étape 3] Configurer la relation entre le service et le dao
Configurer dans applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
bean标签:表示配置bean
id属性:表示给bean起名字
class属性:表示给bean定义类型
-->
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
<!--配置server与dao的关系
property标签:表示配置当前bean的属性
name属性:表示配置哪一个具体的属性
ref属性:表示参照哪一个bean
-->
<property name="bookDao" ref="bookDao"/>
</bean>
</beans>