Spring注解学习_自动装配2_@Resource&@Inject
除了@Autowired外,Spring还支持使用@Resource(JSR250规范)和@Inject(JSR330规范)。(这些都是Java规范注解)
¶@Resource
-
可以和@Auowired一样实现自动装配功能,此注解默认按照组件名称进行装配
-
我们也可以通过@Resource( name=“xx” )的方式指定装配Bean的名称
-
不支持@Primary,不能实现@Autowired( required=false )
继续用上一篇文章的例子,验证:
BookService:
@Service
public class BookService {
@Resource
private BookDao bookDao2;
public void print(){
System.out.println(bookDao2);
}
@Override
public String toString() {
return "BookService{" +
"bookDao=" + bookDao2 +
'}';
}
}
测试:
public class IOCTest_Autowired {
@Test
public void test1(){
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(MainConfigOfAutowired.class);
BookService bookService = context.getBean(BookService.class);
System.out.println(bookService);
}
}
改一下名:
@Resource(name="bookDao")
private BookDao bookDao2;
...
测试结果:
¶@Inject
要另外导入javax.inject的maven依赖,不用了,没有意义
- 除了没有@Autowired( required=false ) 的功能,其他和@Autowired一样
¶另外:
自动装配注解的生效,靠的是 AutowiredAnnotationBeanPostProcessor 这个后置处理器的支持
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,邮件至 708801794@qq.com
文章标题:Spring注解学习_自动装配2_@Resource&@Inject
文章字数:231
本文作者:梅罢葛
发布时间:2020-04-03, 01:55:29
最后更新:2020-04-03, 02:13:57
原始链接:https://qiurungeng.github.io/2020/04/03/Spring%E6%B3%A8%E8%A7%A3%E5%AD%A6%E4%B9%A0-%E8%87%AA%E5%8A%A8%E8%A3%85%E9%85%8D2-Resource-Inject/