IOC的推导
假设我们用2个类实现同一个接口,当我们设计好实现2个类的方法后,如果我们要修改使用的类,就得到实现类里面修改new的对象,很繁琐,我们可以在实现类里面设置set,又set的对象去调用实现方法,而不是我们自己去设置
这样我们要调用哪个类就用set方法set这个类;
之前所有东西都是由程序去控制创建,而现在是由用户自行控制创建。把主动权交给了调用者,程序不用去管怎么创建它,而是只负责提供一个接口。
IOC的本质
控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法
bean
是一个属性私有,有无参构造函数,有get,set方法的类
在spring中,约定大于配置,bean可以说是一种约定,这样bean就可以符合IOC的条件,实现低耦合
注解分为两类:
1、一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired ,
@Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;
2、一类是注册Bean,@Component , @Repository , @ Controller , @Service ,
@Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired
, @Resource配合到一起,把对象、属性、方法完美组装。
@bean
1.Bean注解的作用之一就是能够管理第三方jar包内的类到容器中。
2.在@Configuration中被@Bean标记的方法,会被Spring进行CGLIB代理,从而进行增强。
3.@Bean注解可以对第三方的某些托管给Spring容器的工具类进行定制化。