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了。
  • 相关阅读:
    OpenLayers测量距离和面积
    BeanUtils接口和类
    深入理解Spring--动手实现一个简单的SpringIOC容器
    Spring:源码解读Spring IOC原理
    Spring AOP的底层实现原理
    ClassLoader工作机制
    Cglib及其基本使用
    InvocationHandler和Proxy(Class)的动态代理机制详解
    解密Redis的持久化和主从复制机制
    Redis之父九条编程忠告
  • 原文地址:https://www.cnblogs.com/erma0-007/p/8647308.html
Copyright © 2011-2022 走看看