zoukankan      html  css  js  c++  java
  • @Autowired和@Resource

    Spring对于Bean的依赖注入,支持多种注解方式:@Resourcejavax.annotationJSR250 
    (Common Annotations for Java)
    @Injectjavax.injectJSR330 (Dependency Injection for Java)
    @Autowiredorg.springframework.bean.factorySpring直观上看起来,
    @Autowired是Spring提供的注解,
    其他几个都是JDK本身内建的注解,Spring对这些注解也进行了支持。
    但是使用起来这三者到底有什么区别呢?笔者经过方法的测试,
    发现一些有意思的特性。区别总结如下:一、@Autowired有个required属性,可以配置为false,
    这种情况下如果没有找到对应的bean是不会抛异常的。@Inject和@Resource没有提供对应的配置,
    所以必须找到否则会抛异常。二、 @Autowired和@Inject基本是一样的,
    因为两者都是使用AutowiredAnnotationBeanPostProcessor来处理依赖注入。
    但是@Resource是个例外,
    它使用的是CommonAnnotationBeanPostProcessor来处理依赖注入。
    当然,两者都是BeanPostProcessor。@Autowired和@Inject-
    默认 autowired by type- 可以 通过@Qualifier
    显式指定 autowired by qualifier name。-
    如果 autowired by type 失败(找不到或者找到多个实现),
    则退化为autowired by field name@Resource-
    默认 autowired by field name-
    如果 autowired by field name失败,
    会退化为 autowired by type- 可以 通过@Qualifier
    显式指定 autowired by qualifier name-
    如果 autowired by qualifier name失败,
    会退化为 autowired by field name。
    但是这时候如果 autowired by field name失败,就不会再退化为autowired by type了。
  • 相关阅读:
    java第九次作业
    java第八次作业
    java第七次作业
    java第六次作业
    java第五次作业
    java第四次作业
    java第三次作业
    java第二次作业
    java第一次作业
    Javascript设计模式-----装饰者模式
  • 原文地址:https://www.cnblogs.com/erma0-007/p/8647308.html
Copyright © 2011-2022 走看看