IoC 和依赖注入是什么?@Autowired 和 @Resource 有什么区别?
先自己想一想,再看参考要点
参考要点
- 控制反转(IoC)指对象不再自己创建所依赖的对象,由容器创建好之后交给它,这个过程称为依赖注入
- 好处是对象只依赖接口,替换实现、测试时注入模拟对象都不用改代码,创建、作用域和生命周期由容器统一管理
- 声明 Bean 用 @Component 和派生的 @Service、@Repository、@Controller,第三方库的类在 @Configuration 类中用 @Bean 方法声明
- 通常推荐构造器注入,依赖可以声明为 final,对象创建出来就完整可用
- @Autowired 先按类型查找,找到多个时看 @Primary 和名称,可以用 @Qualifier 指定,@Resource 指定了 name 时按名称,否则先按字段名再按类型,不能用在构造器上