Spring依赖注入
当一个对象其中有一属性存在其他对象的变量时,即存在依赖。依赖注入可以简单的理解为向类里面的属性设置值
spring依赖注入的方式有多种,在spring框架中我们着重掌握前两种:
- set方法注入
- 带参构造器注入
- p名称空间注入
- 自动装配
- 注解
使用set方法注入属性
- 第一步:以service和dao层的依赖关系为例,假设有一个类UserService,其中需要实例UserDao对象,那么我们可以为UserDao设置set方法
public class UserService {
private UserDao userdao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void function() {
userDao.function();
}
}
- 第二步:编写spring配置文件applicationContext.xml,通过property节点给属性赋值
<!--配置bean,随后交由spring管理-->
<bean id="userDao" class="UserDao"/>
<!--创建userService对象-->
<bean id="userService" class="UserService">
<property name="userDao" ref="userDao"/>
</bean>
使用构造器注入
这种注入方式是指在带有参数的构造函数注入,需要传参
public class UserService {
private userDao userDao;
public UserService(UserDao userDao) {
this.userDao = userDao;
System.out.println("构造方法调用userDao");
}
}
配置applicationContext.xml文件
<!--创建userDao对象-->
<bean id="userDao" class="UserDao"/>
<!--创建userService对象-->
<bean id="userService" class="UserService">
<!--使用有参构造注入属性-->
<constructor-arg index="0" name="userDao" type="UserDao" ref="userDao"></constructor-arg>
</bean>
IOC和DI区别
(1)IOC: 控制反转,把对象创建交给spring进行配置
(2)DI: 依赖注入,向类里面的属性中设置值
(3)关系:依赖注入不能单独存在,需要在ioc基础之上完成操作
结语
通过以上总结对spring依赖注入的两种方式有所了解,这是我们接下来学习自动装配和注解的前提,基础永远是构建上层建筑的基石,共勉。
网友评论