set注入:set注入地址


通过构造方法进行注入
1.创建UserDao接口以及UserDaoImpl实现类(接口代码省略)

public class UserDaoImpl implements UserDao {

    @Override
    public void save1() {
        System.out.println("save running...");
    }
}

2.创建UserService接口以及UserServiceImpl实现类(接口代码省略)

public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public UserServiceImpl() {
    }

    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public void sava() {
        userDao.save1();
    }
}

3.spring配置文件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="userDao" class="com.hao.dao.impl.UserDaoImpl"/>
    <bean id="userService" class="com.hao.service.impl.UserServiceImpl">
        <constructor-arg name="userDao" ref="userDao"></constructor-arg>
    </bean>
</beans>

其中的bean标签都是设置唯一标识id和类位置,然后第二个bean标签中使用了子标签constructor-arg,name属性是UserServiceImpl中的属性值userDao
在这里插入图片描述
然后ref引用的是spring容器中第一个bean标签userDao的唯一标识id

4.创建测试类-controller层

public class UserController {
    public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService service = (UserService) context.getBean("userService");
        service.sava();


    }
}

结果:sava running . . .

执行流程,
1.加载配置文件,创建spring容器,在容器中创建UserService对象和UserDao对象--------》为什么还没有从外部获取UserService对象就创建了呢?请访问链接:scope标签的作用
2.在spring容器中创建对象时,通过有参构造进行注入,然后把对象赋给UserServiceImpl中的属性UserDao
3.从容器中获取UserService对象
4.调用方法

posted on 2020-11-12 21:14  凸凸大军的一员  阅读(46)  评论(0编辑  收藏  举报