依赖注入(DI)是一个过程,通过这个过程,对象可以通过构造函数参数,工厂方法的参数或者在构造或返回对象实例后设置的属性来定义它们的依赖关系从工厂方法。然后容器在创建bean时注入这些依赖关系。这个过程从根本上说是相反的,因此名为控制反转(IoC),它本身通过使用类的直接构造或服务定位符模式来控制它自己的依赖关系的实例化或位置。
DI 实现过程中,我们最常见的一种方法就是使用settern方法来实现我们的属性注入,
更多依赖注入(DI)相关技术推荐阅读:《Spring依赖注入(DI)详解》
1.准备属性数据 UserDao 和 UserService
/** * @author 上海尚学堂 * 了解更多 加V:java8733 * */ public class UserDao { public String userLogin () { return "我是 UserDao -----> userLogin(); } }
我们需要将 UserDao 注入到 UserService中
/** * @author 上海尚学堂 * 了解更多 加V:java8733 */ public class UserService { private UserDao userDao ; public void userLogin () { String res = userDao.userLogin(); System.out.println(res); } public void setUserDao(UserDao userDao) { this.userDao = userDao; } }
2.Spring的配置文件 spring-config.xml
<?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="userDao" class="com.shsxt.demo.UserDao"></bean> <!-- 第一种 setter注入 --> <bean id= "userService" class = "com.shsxt.demo.UserService"> <property name="userDao" ref="userDao"></property> </bean> </beans>
在bean标签中通过property 属性来完成 属性注入。
3.注意事项
通过上述的配置我们将完成 setter的注入方式注入,特别注意的是我们关于属性需要提供setter这样的方式。