为什么程序在IDEA中会报错咧?
其实这个程序是可以编译并运行通过的,即:是可以Spring是可以通过该注解创建bean的,如果换成是@Resource,则不会报错了。
此处便引出了问题:@Autowired与 @Resource区别
- @Autowired是Spring的注解,@Resource是J2EE的注解,导入注解的时候这两个注解的包名不一样
- @Autowired默认按照byType方式进行bean匹配
@Resource默认按照byName方式进行bean匹配,找不到再按type去匹配。
共同点: @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
总结:
- @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用。