spring的依赖注入
2016-05-22 22:38
507 查看
依赖注入的英文名Dependency Injection。与ioc差不多,不过是从两个角度描述同一个概念。举个栗子,一个对象A需要使用对象B来完成某个功能,可以说A依赖B,spring会在创建A时自动将B对象注入A对象。so,依赖注入的作用就是使用spring框架创建对象时,动态的将所依赖的对象注入到Bean组件中。
说到依赖注入,实现方式有3中,分别是setter方法注入、构造方法注入和接口注入。
属性setter注入:ioc容器使用setter方法来注入被依赖的对象。通过调用无参构造器或者无参的static工厂方法实例化Bea后,调用Bean的setter方法,实现基于setter的依赖注入。
构造方法注入:使用构造方法来注入所依赖的实例。
接口注入:spring容器不支持接口注入。
今天玩的是setter注入。通过servi层调用Dao层来模拟依赖注入。
[java] view
plain copy
print?
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
public class BookDao
{
public void save()
{
System.out.println("add Book");
}
}
[java] view
plain copy
print?
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
public class BookService
{
private BookDao bookDao;//所依赖的对象
public void setBookDao(BookDao bookDao)//用于setter注入
{
this.bookDao = bookDao;
}
public void addBook()
{
bookDao.save();
}
}
配置xml,xml的位置可以放到bean所在的目录i
[java] view
plain copy
print?
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
<?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="bookDaoId" class="com.canyugan.di.BookDao"/>
<bean id="bookServiceId" class="com.canyugan.di.BookService">
<!-- <property> 进行依赖注入过程,底层将执行setter方法
* name 对象的属性, setBookDao -> BookDao -> bookDao
* ref 其他对象实例引用
-->
<!-- has a -->
<property name="bookDao" ref="bookDaoId"></property>
</bean>
</beans>
测试我们的setter注入
[java] view
plain copy
print?
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
@Test
public void demo1()
{
//加载配置文件
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com/canyugan/di/beans.xml");
//从spring的工厂中获取对象
BookService bookService=applicationContext.getBean("bookServiceId",BookService.class);
bookService.addBook();
}
说到依赖注入,实现方式有3中,分别是setter方法注入、构造方法注入和接口注入。
属性setter注入:ioc容器使用setter方法来注入被依赖的对象。通过调用无参构造器或者无参的static工厂方法实例化Bea后,调用Bean的setter方法,实现基于setter的依赖注入。
构造方法注入:使用构造方法来注入所依赖的实例。
接口注入:spring容器不支持接口注入。
今天玩的是setter注入。通过servi层调用Dao层来模拟依赖注入。
[java] view
plain copy
print?
![](https://code.csdn.net/assets/CODE_ico.png)
public class BookDao
{
public void save()
{
System.out.println("add Book");
}
}
[java] view
plain copy
print?
![](https://code.csdn.net/assets/CODE_ico.png)
public class BookService
{
private BookDao bookDao;//所依赖的对象
public void setBookDao(BookDao bookDao)//用于setter注入
{
this.bookDao = bookDao;
}
public void addBook()
{
bookDao.save();
}
}
配置xml,xml的位置可以放到bean所在的目录i
[java] view
plain copy
print?
![](https://code.csdn.net/assets/CODE_ico.png)
<?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="bookDaoId" class="com.canyugan.di.BookDao"/>
<bean id="bookServiceId" class="com.canyugan.di.BookService">
<!-- <property> 进行依赖注入过程,底层将执行setter方法
* name 对象的属性, setBookDao -> BookDao -> bookDao
* ref 其他对象实例引用
-->
<!-- has a -->
<property name="bookDao" ref="bookDaoId"></property>
</bean>
</beans>
测试我们的setter注入
[java] view
plain copy
print?
![](https://code.csdn.net/assets/CODE_ico.png)
@Test
public void demo1()
{
//加载配置文件
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com/canyugan/di/beans.xml");
//从spring的工厂中获取对象
BookService bookService=applicationContext.getBean("bookServiceId",BookService.class);
bookService.addBook();
}
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- 一起动手编写Android图片加载框架
- 基于.NET平台常用的框架和开源程序整理
- 列举PHP的Yii 2框架的开发优势
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- 轻量级javascript 框架Backbone使用指南
- javascript实现框架高度随内容改变的方法
- JS刷新框架外页面七种实现代码
- 超赞的动手创建JavaScript框架的详细教程
- 深入探讨前端框架react