开发springboot过程中,使用@Autowised注解出现红色下划线报错问题,查询后改用@Resource解决,在这里记录一下两者的区别
相同点
@Autowised 与 @Resource两个注解都可以用来进行对象的自动注入
区别
首先,@Autowised 是spring中的,@Resource是j2ee的,还有就是两种注入查找顺序的区别。
@Autowised:(类型优先)
1.默认在spring容器中找到实现类(byType),
如图所示,会找到Demo的实现类DemoImpl进行注入2.如果出现多个实现类的情况下,则会报错(不知道应该使用哪一个)
3.如果出现多个实现类,可以使用 如Qualifier(“DemoImpl2”) 指定所需要的DemoImpl2
@Resource :(名字优先)
@Resource
private Demo demo;
1.会先在spring容器中找到名字相同的类(byName),即使有多个实现类,但是只需要在spring中注册时,使用了(如demo)对该实现类进行命名,则会自动找到该类
2.如果类没有命名,则会根据类型查找它的实现类(byType),如果不唯一,则报错