Notes d'étude Spring : Réaliser l'IOC et la DI du framework Spring basé sur deux méthodes de configuration de fichiers XML et d'annotations

Ouvrez d'abord IntelliJ IDEA, créez un projet Maven spring-lesson, supprimez le dossier src et ne conservez que le fichier pom correspondant aux dépendances maven. Ce projet est utilisé comme projet parent et le nœud <packaging> est ajouté au fichier pom. Le contenu du nœud est pom, indiquant la construction Ingénierie globale, comme suit :

 <groupId>com.winning</groupId>
  <artifactId>spring-lesson</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--表示构建聚合工程-->
  <packaging>pom</packaging>

Ajoutez un nouveau module au projet parent. Le nom du module est day1-spring. Tout d'abord, introduisez les dépendances liées à Spring, qui sont principalement des dépendances de contexte Spring, comme suit :

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.5.RELEASE</version>
</dependency>

Ajoutez ensuite un package : com.winner.dao, ajoutez une interface TestDAO, qui possède une méthode hello() :

package com.winning.dao;

public interface TestDAO {
    void hello();
}
package com.winning.dao;

import org.springframework.stereotype.Repository;

@Repository
public class TestDAOImpl implements TestDAO {
    @Override
    public void hello() {
        System.out.println("-->dao层TestDAOImpl执行hello()方法!");
    }
}

Continuez à ajouter des packages, com.winner.service, et créez une interface TestService, qui possède une méthode CallDaoMethod :

package com.winning.service;

import com.winning.dao.TestDAO;

public interface TestService {

    void CallDaoMethod();
    void  setTestDAO(TestDAO testDAO);
}
@Service
public class TestServiceImpl implements TestService {

    @Autowired // 把spring容器中TestDAO类型实例注入到testDAO属性中
    TestDAO testDao;

    @Override
    public void CallDaoMethod() {

        System.out.println("-->service层TestServiceImpl执行CallDaoMethod()方法!");
        testDao.hello();
    }

    @Override
    public void setTestDAO(TestDAO testDAO) {
        this.testDao = testDAO;
    }

}

Dans le code de la couche de service ci-dessus, il existe une propriété de type TestDAO. Pour garantir que cette propriété puisse être injectée, une méthode set doit être fournie pour la propriété.


Ensuite, implémentons la gestion des objets java bean via le fichier de configuration XML et ajoutons un fichier applicationContext.xml sous le dossier resources

<?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 id="testDao" class="com.winning.dao.TestDAOImpl" />
    <bean id="testService" class="com.winning.service.TestServiceImpl">
        <!--配置属性的依赖注入,前提是属性有set方法-->
        <property name="TestDAO" ref="testDao" />
    </bean>
</beans>

Il convient de noter ici que l'identifiant doit être unique et que le nœud de classe représente le chemin de classe, c'est-à-dire le nom du package + le nom de la classe. Dans le même temps, lorsque l'objet de la couche DAO est injecté dans la couche de service, nous utilisons l'injection d'attributs et le nœud ref correspond au nom de l'attribut.


Ensuite, testons, chargeons notre fichier de configuration XML via la classe ClassPathXmlApplicationContext, le nom du paramètre est le nom du fichier XML, comme suit :

Contexte ApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

Ci-dessous, nous utilisons cette méthode pour obtenir respectivement les objets de la couche DAO et de la couche de service.

//通过xml文件管理java bean对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");

        Object testDaoObj = context.getBean("testDao");
        System.out.println( testDaoObj );

        //TestService.class,表示返回指定Bean类型,无需用Object接收
        TestService testService = context.getBean("testService", TestService.class);
        testService.CallDaoMethod();

Exécutez-le pour voir le résultat :

Cela a été un succès et l'espace est limité. Partageons la méthode d'implémentation des annotations la prochaine fois. 

Je suppose que tu aimes

Origine blog.csdn.net/HaoNanEr1989/article/details/115427664
conseillé
Classement