对象注入(依赖装配):更加简单的读取Bean(是从Spring容器中读取某个对象,放到当前类中)
1.属性注入
优点:简单
缺点:没办法实现final修饰的变量注入;兼容不好,适用IoC;写法简单,违背单一设计原则的概率大;
2.Setter注入
优点:更符合单一设计原则
缺点:不可注入不可变即final修饰的变量;使用setter注入的对象可能会被修改;
3.构造方法注入(官方推荐)
如果当前类中只有一个构造方法,那么@Autowired可以省略;
优点:可注入不可变对象(final修饰的对象可以直接赋值,也可以在构造方法里赋值);
注入的对象不会被改变(构造方法只能执行一次);
构造方法注入可保证注入对象完全被初始化;
兼容性更好;
@Resource注入,不支持构造方法注入
@Autowired注入,不支持重命名;