spring ioc
spring ioc分为控制反转和依赖注入。
控制反转:把创建对象的过程交给外部容器(ioc容器)操作。
依赖注入:给属性赋值
spring ioc注入的4种方式
Spring 支持的注入方式共有四种,set 注入、构造器注入、静态工厂注入、实例化 工厂注入
spring ioc 自动注入
1.准备环境(修改配置文件)
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
</beans>
2.开启自动化注入
<!--开启自动化装配(注入)-->
<context:annotation-config/>
3.给注入的bean对象添加注解
@Resource注解
1、默认根据属性字段名称查找对应的bean对象 (属性字段的名称与bean标签的id属性值相等)
2、如果属性字段名称未找到,则会通过类型(Class类型)查找
3、属性可以提供set方法,也可以不提供set方法
4、注解可以声明在属性级别 或 set方法级别
5、@Resource可以设置name属性,name属性值必须与bean的id属性值一致;如果设置了name属性值,就只会按照name属性值查找bean对象
6、当注入接口时,如果接口只有一个实现则正常实例化;如果接口存在多个实现,则需要使用name属性指定需要被实例化的bean对象
private UserDao ud;
@Resource
public void setUd(UserDao ud) {
this.ud = ud;
}
@Resource(name = "userDao03")
private IUserDao iUserDao;
@AutoWired注解
1、默认通过类型(Class类型)查找bean对象 与属性字段的名称无关
2、属性可以提供set方法,也可以不提供set方法
3、注解可以声明在属性级别 或 set方法级别
4、可以添加@Qualifier结合使用,通过value属性值查找beam对象(value属性值必须要设置,且值要与bwan标签的id属性值对应)
@Autowired
private AccountDao accountDao;
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}