Spring注解和xml
1.注解/Annotation
1.1DI相关
@Autowired
可以单独使用,用于依赖注入的时候使用(DI)。
如果单独使用,则按类型连接(wired by type)。因此,如果容器中声明了多个相同类型的bean,就会出现问题,因为@Autowired
不知道使用哪个bean来注入。因此,使用@Qualifier
和@Autowired
来通过指定bean名字(通过名字来连接)来明确哪些bean需要被连接。
@Resource
也是通过名称连接的,所以如果@Autowired
和Qualifier
一起使用,它和@Resource
是一样的。
区别在于@Autowired
和@Qualifier
是spring注解,而@Resource
是标准的java注解(来自JSR-250)。此外,@@Resource
只支持字段和setter注入,而@Autowired
支持字段、setter、构造函数和多参数方法注入。
建议对字段和setter注入使用@Resource
,对于构造函数或者多参数方法注入,坚持使用@Qualifier
和@Autowired
2.动态代理
JDK的动态代理
cglib动态代理