对于Spring
项目DI
的入门案例,我们依然先分析思路
然后再代码实现
。
1. 入门案例思路分析
(1)要想实现依赖注入,必须要基于IOC
管理Bean
。
DI
的入门案例要依赖于前面IOC
的入门案例
(2)Service
中使用new形式创建的Dao
对象是否保留?
- 需要删除掉,最终要使用
IOC
容器中的bean
对象
(3)Service
中需要的Dao
对象如何进入到Service
中?
- 在
Service
中提供方法,让Spring
的IOC
容器可以通过该方法传入bean
对象
(4)Service
与Dao
间的关系如何描述:
- 使用配置文件
2. 入门案例代码实现
需求:基于
IOC
入门案例,在UserServiceImpl
类中删除new
对象的方式,使用Spring
的DI
完成Dao
层的注入1.删除业务层中使用
new
的方式创建的dao
对象2.在业务层提供
UserDao
的setter
方法3.在配置文件中添加依赖注入的配置
4.运行程序调用方法
步骤1:去除代码中的new
在UserServiceImpl
类中,删除业务层中使用new
的方式创建的dao
对象
public class UserServiceImpl implements UserService {
//public UserDao userDao = new UserDaoImpl();
//删除业务层中使用new的方式创建的dao对象
private UserDao userDao ;
public void save() {
System.out.println("User Service save ....");
userDao.save();
}
}
步骤2:为属性提供setter方法
public class UserServiceImpl implements UserService {
//public UserDao userDao = new UserDaoImpl();
//删除业务层中使用new的方式创建的dao对象
private UserDao userDao ;
public void save() {
System.out.println("User Service save ....");
userDao.save();
}
//提供对应的set方法
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
}
步骤3:修改配置完成注入
在配置文件中添加依赖注入的配置
<?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标签标示配置bean-->
<!--id属性标示给bean起名字-->
<!--class属性表示给bean定义类型-->
<bean id="UserDao" class="com.dcxuexi.dao.impl.UserDaoImpl" />
<bean id="UserService" class="com.dcxuexi.service.impl.UserServiceImpl" >
<!--配置server与dao的关系-->
<!--property标签表示配置当前bean的属性-->
<!--name属性表示配置哪一个具体的属性-->
<!--ref属性表示参照哪一个bean-->
<property name="userDao" ref="UserDao" />
</bean>
</beans>
注意:配置中的两个UserDao
的含义是不一样的
name="UserDao"
中UserDao
的作用是让Spring
的IOC
容器在获取到名称后,将首字母大写,前面加set
找对应的setUserDao()
方法进行对象注入ref="UserDao"
中UserDao
的作用是让Spring
能在IOC
容器中找到id
为UserDao
的Bean
对象给UserService
进行注入- 综上所述,对应关系如下:
步骤4:运行程序
运行,测试结果为: