依赖注入方式
问题导入:向一个类中传递数据的方式有几种?
- 普通方法(set方法)
- 构造方法
问题导入:依赖注入描述了在容器中建立bean与bean之间依赖关系的过程,如果bean运行需要的是数字或字符串呢?
- 引用类型
- 简单类型(基本数据类型与String)
依赖注入方式
1.setter注入
- 简单类型
- 引用类型
2.构造器注入(构造方法注入)
- 简单类型
- 引用类型
setter注入——引用类型
在bean中定义引用类型属性并提供可访问的set方法
public class BookServiceImpl implements BookService {
//删除业务层中使用New的方式创建的dao对象
// private BookDao bookDao = new BookDaoImpl() ;
private BookDao bookDao ;
public void save(){
System.out.println("book service save....");
bookDao.save();
}
//di:提供对应的set方法
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
配置中使用property标签ref属性注入引用类型对象
<bean id="bookDao" name="bookDao2 bookdao" class="com.example.iocdemo04.dao.impl.BookDaoImpl" scope="prototype"/>
<bean id="bookservice" name="bookService bookService2 " class="com.example.iocdemo04.service.impl.BookServiceImpl">
<!--配置service与dao的关系-->
<!--
name属性表示配置哪一个具体的属性 ref属性表示参照哪一个bean
-->
<property name="bookDao" ref="bookDao"></property>
</bean>
setter注入——简单类型
在bean中定义引用类型属性并提供可访问的set方法
public class BookDaoImpl implements BookDao{
private int connectionNumber;
public void setConnectionNumber(int connectionNumber) {
this.connectionNumber= connectionNumber;
}
}
配置中使用property标签value属性注入简单类型数据
<bean id="bookDao" class="com.example.dao.impl.BookDaoImpl">
<property name="connectionNumber" value ="10"/>
</bean>