Spring学习笔记:基于XML文件和注解两种配置方式实现spring框架的IOC和DI

首先打开IntelliJ IDEA,创建一个Maven项目spring-lesson,删除src文件夹,只保留maven依赖对应的pom文件,这个项目作为父工程,在pom文件中增加<packaging>节点,节点内容为pom,表示构建聚合工程,如下:

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

在父工程上添加一个新的模块,模块名称为day1-spring,首先哟啊引入spring相关依赖,这里主要是spring-context的依赖,如下:

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

然后添加一个包:com.winning.dao,增加一个接口TestDAO,其中有一个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()方法!");
    }
}

继续添加包,com.winning.service,创建TestService接口,其中有个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;
    }

}

上面的service层代码中,有一个TestDAO类型的属性,要保证该属性能够注入进来,必须对属性提供一个set方法。


接下来我们来通过xml配置文件的方式实现java bean对象的管理,在resources文件夹下添加一个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 id="testDao" class="com.winning.dao.TestDAOImpl" />
    <bean id="testService" class="com.winning.service.TestServiceImpl">
        <!--配置属性的依赖注入,前提是属性有set方法-->
        <property name="TestDAO" ref="testDao" />
    </bean>
</beans>

这里需要注意的是,id必须唯一,class节点表示类路径,也就是包名+类名。同时,在service层注入DAO层对象时,我们通过属性注入的方式,ref节点对应属性名称。


接下来我们来测试,通过ClassPathXmlApplicationContext这个类来加载我们的xml配置文件,参数名称为xml文件名,如下:

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

下面我们通过这种方式,来分别获取DAO层和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();

运行看一下结果:

已经成功了,篇幅有限,注解实现方式下次再分享吧。 

猜你喜欢

转载自blog.csdn.net/HaoNanEr1989/article/details/115427664