Spring注解学习_自动装配2_@Resource&@Inject

  1. @Resource
  2. @Inject
  3. 另外:

除了@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);
    }
}

image-20200403020306939

改一下名:

@Resource(name="bookDao")
private BookDao bookDao2;
...

测试结果:

image-20200403020718971

@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/
目录
×

喜欢就点赞,疼爱就打赏