spring-依赖注入
Bean的依赖注入概念
- 依赖注入(DependencyInjection):它是Spring框架核心IOC的具体实现
在编写程序时,通过控制反转,把对象的创建交给了Spring,但是代码中不可能出现没有依赖的情况。
Ioc解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍然会调用持久层的方法。
那这种业务层和持久层的依赖关系,在使用Spring之后,就让Spring来维护了。
简单的说,就是坐等把框架把持久层2对象传入业务层,而不用我们自己去获取。
Bean的依赖注入方式:
怎么将UserDao怎样注入到UserService内部呢?
- 构造方法
- set方法
思路:
1.实现一个UsrDao方法
2.在service中创建一个UserDao方法
3.通过set方法来进行注入
4.编写xml文档
实现一个UsrDao方法
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("save running.....");
}
}
实现service中调用dao方法,并通过set方法来进行注入
public class UserImplService implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Test
public void save() {
userDao.save();
}
}
4.编写xml文档
<bean id="userDao" class="com.my.UserDaoImpl"/>
<bean id="UserService" class="com.my.service.UserImplService">
<!--name是指属性的service中的set方法名字的除去set的开头字母小写-->
<!--业务层调用数据层,调用数据层对象的过程交给spring容器来做,然后就可以用数据层的方法了-->
<property name="userDao" ref="userDao"></property>
</bean>
5.测试
public class UserDemo {
@Test
public void mytest(){
ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userDao1 = (UserService) application.getBean("userService");
userDao1.save();
}
}
重点bean的配置
** name是指属性的service中的set方法名字的除去set的开头字母变为小写**
ref为注入的对象
总结
先创建一个(UserDao)接口,然后再接口(UserDao)中编写方法,创建一个类(UserDaoImpl)来实现方法
然后编写一个(UserService)接口,然后再接口中(UserService)中实现方法,创建一个类(UserImplService)来实现方法
在(UserImplService)方法中,利用set方法进行注入。
在xml配文件中,进行配置注入name为:set方法,以及注入的对象:userDao
测试中的流程:先读取配置文件,将要注入的值放到容器当中。