入门案例思路分析
(1)要想实现依赖注入,必须要基于IOC管理Bean
DI的入门案例要依赖于前面IOC的入门案例
(2)Service中使用new形式创建的Dao对象是否保留?
需要删除掉,最终要使用IOC容器中的bean对象
(3)Service中需要的Dao对象如何进入到Service中?
在Service中提供方法,让Spring的IOC容器可以通过该方法传入bean对象
(4)Service与Dao间的关系如何描述?
使用配置文件
入门案例代码实现
需求:基于IOC入门案例,在BookServiceImpl类中删除new对象的方式,使用Spring的DI完成 Dao层的注入
1.删除业务层中使用new的方式创建的dao对象
2.在业务层提供BookDao的setter方法
3.在配置文件中添加依赖注入的配置
4.运行程序调用方法
步骤1: 去除代码中的new
在BookServiceImpl类中,删除业务层中使用new的方式创建的dao对象
public class BookServiceImpl implements BookService {
//删除业务层中使用new的方式创建的dao对象
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
步骤2:为属性提供setter方法
在BookServiceImpl类中,为BookDao提供setter方法
1 public class BookServiceImpl implements BookService {
2 //删除业务层中使用new的方式创建的dao对象
3 private BookDao bookDao;
4
5 public void save() {
6 System.out.println("book service save ...");
7 bookDao.save();
8 }
9 //提供对应的set方法
10 public void setBookDao(BookDao bookDao) {
11 this.bookDao = bookDao;
12 }
13 }
14
步骤3:修改配置完成注入
在配置文件中添加依赖注入的配置
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
5 <!--bean标签标示配置bean
6 id属性标示给bean起名字
7 class属性表示给bean定义类型
8 -->
9 <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
10
11 <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
12 <!--配置server与dao的关系-->
13 <!--property标签表示配置当前bean的属性
14 name属性表示配置哪一个具体的属性
15 ref属性表示参照哪一个bean
16 -->
17 <property name="bookDao" ref="bookDao"/>
18 </bean>
19
20 </beans>
将Dao放到Service里面
然后就可以运行了,就是需要property这个关系绑定
注意:配置中的两个bookDao的含义是不一样的
name="bookDao"中bookDao的作用是让Spring的IOC容器在获取到名称后,将首字母大写,前
面加set找对应的setBookDao()方法进行对象注入
ref="bookDao"中bookDao的作用是让Spring能在IOC容器中找到id为bookDao的Bean对象给
bookService进行注入
综上所述,对应关系如下:
步骤4:运行程序
运行,测试结果为: