Cas d'entrée CIO et DI de printemps

insérez la description de l'image ici
[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

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

  1. gérer quoi ? (Service et Dao)
  2. Comment informer le conteneur IOC de l'objet géré ? (fichier de configuration)
  3. Comment obtenir le conteneur IoC lorsque l'objet géré est remis au conteneur IoC ? (interface)
  4. Une fois que le conteneur IOC l'a obtenu, comment obtenir le haricot du conteneur ? (méthode des interfaces)
  5. 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

image-20210729184337603

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

  1. Gérer les beans en fonction de l'IOC
  2. Les objets Dao créés sous forme de nouveau sont-ils conservés dans le Service ? (Non)
  3. Comment les objets Dao nécessaires au Service entrent-ils dans le Service ? (indiquer la méthode)
  4. 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>

2.4 Présentation graphique

image-20210729183104748

Je suppose que tu aimes

Origine blog.csdn.net/qq_51808107/article/details/130310512
conseillé
Classement