@Autowried和@Resource的区别

都是用来装配Bean的注解。都可以写在字段上,或写在setter方法上。

@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。如:

publicclass TrayServiceImpl {

    // 下面两种@Autowired只要使用一种即可 

    //这种方法是只按照byType注入

  @Autowired

    private TrayDao trayDao;// 用于字段上 

    @Autowired

    public void setTrayDao(TrayDao trayDao) {// 用于属性的方法上

    this.trayDao = trayDao;

    }

}

或者

publicclass TrayServiceImpl {

//这种写法是先byType 注入,如果是null值,在byName注入

@Autowired  @Qualifier("trayDao")

private TrayDao trayDao;

}

Autowried是Spring提供的注解,而Resource是J2EE提供的注解。Resource有两个属性,name和type,resource会把name作为bean的名称,type作为bean的类型。

使用@Resource 注解转配Bean的顺序:

1.如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常(异常信息:找不到"bean"的声明);

2.如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常;

3.如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;

4.如果既没有指定name,又没有指定type,则自动按照byName方式进行装配(见2);如果没有匹配,则回退为一个原始类型(TrayDao )进行匹配,如果匹配则自动装配;

ps:个人推荐使用@Resource注解,这个注解是属于J2EE的,减少了与spring的耦合。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,261评论 19赞 139
  • 前言:由于在第一次面试中吃了暗亏,考到了SpringMVC的@RequestMapping和@ResponseBo...
    天谴残魂阅读 4,746评论 3赞 17
  • 相同点: @Resource的作用相当于@Autowired,均可标注在字段或者属性的setter方法上。 不同点...
    CodingHou阅读 11,428评论 0赞 7
  • “振保的生命里有两个女人,他说的一个是他的白玫瑰,一个是他的红玫瑰。” “也许每一个男子全部都有过这样的两个女人,...
    语之奕双阅读 603评论 7赞 6
  • 按:夕阳虽已近黄昏,却也别有韵味。 描写夕阳之景,抒发独特之情。不超过140字。注意:写景顺序;调动词语与运用修辞...
    简约语文阅读 6,964评论 0赞 12

友情链接更多精彩内容