Inversion of control的原理实现:
自定义注解:
提供Bean的工厂,用于给代理获取然后注入到指定位置
Bean类接口及其实现类
需要注入类的对象,Bean由代理注入到@Cup注解处
代理类,用于完成对象的获取与注入
以上代码可实现更改Bean类的注解@Provide位置而提供不同的Bean已实现代理。其使用的主要技术为注解和反射。
Spring中的IOC实现:
Bean类工厂,用于提供Bean对象
@Component用于Spring识别,将该类交由Spring代理,作用于类。
@Bean是Spring用于注入的Bean类对象,作用于方法。
Bean类与其父接口并无任何改变
需要注入Bean对象的类
@Autowired表示Bean对象填充的位置,作用于方法。
Spring配置类:
@Configuration标识为配置类
@ComponentScan( { "..." , "...." , "...." } )
指示需要由Spring代理的类所在的包,其value值为一个String[],当有多个包时,其写法如同String数组。
测试类:
通过更改@Bean注解的位置可以实现代理