@Autowired用在字段上 或者用在对应的setter方法上 也可以(既会返回字段的注解 也会返回方法的注解 )
@Autowired注解是按类型装配对象 该注解有一个required属性 ,该属性取值为true或false
true表示字段是必须要装配的 如果在spring容器中没有找到对应的bean 则抛出异常
false 表示字段不是必须要装配的 如果在spring容器中能找到 则装配 如果找不到 则装配为null
@Autowired自动装配既可以在注解的组件中装配 也可以在xml中配置的组件中装配 (即在xml和包中找 )
@Autowired的作用是
自动装配,自动根据属性的类型,在spring ioc容器所有资源中找对应类型的bean!
1. applicationContext.xml中找
2. 扫描的包下找
决定能不能找到匹配的bean的必要条件:
1. 类型要与Car一致
2. 要被spring容器管理
结果:
找不见:
且@Autowired(required = true)时,就报错
且@Autowired(required = false)时,就不报错,不注入了!
找见2个类型与Car一致的
--> xml中有, 扫描的包中也有, 最终用扫描包中的那个
--> xml中2个。报错
=================================================================
@Resource的作用是
1. 先按照被@Resource注解的属性名称来装配,如果找不见指定的名称,就进入第二部
2. @Resource就变得跟@Autowired一样了!
思考,如果按照名称找见了,
且找见了2个名称匹配的bean,一个在xml中,一个在被扫描的包中,最终使用xml中的@Autowired的作用
原文:https://www.cnblogs.com/wangchao422/p/9648203.html