两个注解都是Spring生态环境中实现bean的依赖注入。
Autowired是spring提供的一个注解,默认根据类型来实现bean的注入。autowired里面有一个required的属性,它的默认值为true。表示强制要求bean实例的一个注入。
在应用启动的时候,如果ioc容器不存在对应类型的Bean,启动时候就会报错。如果不希望自动注入可以把属性设置为false。
如果在spring ioc里面存在多个相同类型的Bean实例。由于Autowired的注解根据类型注入bean的实例的,会报错(原本只有一个单实例bean,提示注入多个导致失败),针对这个问题可以@Primary或者
@primary表示主要的bean,当存在多个相同类型的Bean的时候,优先使用声明了@Primary注解的一个Bean。
而@Qualifier注解类似于条件筛选,它可以根据bean的名字去找到需要装配的目标Bean。
@Resource是jdk里面提供的注解,只是spring提供了这种注解功能的一个知识,它的使用方式和autowired完全相同。
最大的差异化在于@Resource支持byName和byType两种注入方式,如果使用name会根据bean的名字去进行依赖注入,如果使用typespring会根据类型进行依赖注入。假设两个属性都没有配置的情况下,会现根据定义的属性名字去匹配,如果没有匹配成功再根据类型再匹配,如果两个都没有匹配到的话,就会报错。
总结
autowired是根据类型来匹配的,是spring里面定义的;resource是根据name或者type匹配,是jdk定义的,只是spring对其进行支持。