@AutoWired和@Resource注解——做个比较

    技术2022-07-11  88

    相同点:

    都是从Spring容器中取出相应的bean对象,自动装配,均可标注在字段或属性的setter方法上。

    不同点:

    @Autowired是Spring提供,需要导入包org.springframework.beans.factory.annotation.Autowired; @Resource是由J2EE提供,需要包javax.annotation.Resource,需要JDK1.6及以上。

    @Autowired只按照byType 注入,依赖的对象必须存在,如果允许为null值,需要加required=false,即@AutoWired(required=false);若要通过名称装配可以配合@Qualifier注解; @Resource默认按byName自动注入,也提供按照byType 注入。@Resource有两个中重要的属性:name和type。 ①如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。 ②如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。 ③如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。 ④如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。

    建议:

    **推荐使用@Resource注解在字段上,这样就不用写setter方法了.并且这个注解是属于J2EE的,减少了与Spring的耦合。**

    ps:以上来源于网络,整理下来仅供自己日后学习

    Processed: 0.014, SQL: 9