都是用来装配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的耦合。

作者:白首倾盖
链接:https://www.jianshu.com/p/5c5715d4ed3d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

@Autowired 和 @ Resource 的区别的更多相关文章

  1. java @Autowired与@Resource的区别

    @Autowired与@Resource的区别     1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2.@Autowired默认 ...

  2. Spring 注释 @Autowired 和@Resource 的区别

    Spring 注释 @Autowired 和@Resource 的区别 一. @Autowired和@Resource都可以用来装配bean,都可以写在字段上,或者方法上. 二. @Autowired ...

  3. @Autowired 与@Resource的区别(详细)

    参考:@Autowired 与@Resource的区别(详细) spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@Pos ...

  4. java面试题之@Autowired和@Resource的区别

    @Autowired和@Resource的区别: 1.都可以用来装配bean,都可以写在字段或者方法上: 2. @Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果允许为nul ...

  5. @Autowired 与@Resource的区别详解

    spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...

  6. 关于@Autowired和@Resource注解区别

    区分一下@Autowired和@Resource两个注解的区别: 1.@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配 2.@A ...

  7. @Autowired 与@Resource的区别

    1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2  @Autowired默认按类型装配(这个注解是属业spring的),默认情况下 ...

  8. @Autowired与@Resource的区别

    1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2.@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必 ...

  9. spring @Autowired或@Resource 的区别

    1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2.@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必 ...

  10. Spring中@Autowired与@Resource的区别

    1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2.@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必 ...

随机推荐

  1. NET站点升级后,新特新无法编译通过

    NET3.5 webconfig中有自动配置如下代码,用于指示编译器. <system.codedom> <compilers> <compiler language=& ...

  2. http调用之RestTemplate

    核心方法为org.springframework.web.client.RestTemplate.doExecute(URI, HttpMethod, RequestCallback, Respons ...

  3. 使用pandas读取excel

    使用pandas读取excel Excel是微软的经典之作,在这里我们介绍使用Python的pandas数据分析包来解决此问题. pd.read_excel(io, sheet_name = 0, h ...

  4. Apache+Php+Mysql配置

    软件工具:(下载时注意下载相应版本,不同版本安装细节可能会有差异!!) 1>httpd-2.4.18-win64-VC14.zip 下载地址: http://www.apachelounge.c ...

  5. spring boot 中容器 Jetty、Tomcat、Undertow

    spring boot 中依赖tomcat <dependency> <groupId>org.springframework.boot</groupId> < ...

  6. 华为云WeLink 颠覆你对智能办公的想象

    导读 华为云发现,与企业数字化关系最紧密的就是办公数字化,所以将WeLink放到华为云上可以作为一个抓手让企业更直观地感受到云端数字化,而且华为云的合作伙伴,也可以与WeLink建立联接,从而进整个企 ...

  7. 【转】IntelliJ IDEA 仿照vs2017快捷键设置,以及字体颜色设置

    因后期工作需要使用java技术栈,所以近期抽空下载了intelliJ IDEA工具,但是作为一个Net开发者,在使用了vs以后,感觉在使用别的开发工具感觉就是没法和vs相比,毕竟vs被称为宇宙最强id ...

  8. mac下删除不需要的应用程序

    一般的应用程序删除: 1)可以在 前往--应用程序 中直接删除 2)直接在启动台中按住出现X直接删除. 问题: mac下不出现在应用程序中,启动台中按住也不出现X,也不可以直接拖到废纸篓中删除的应用如 ...

  9. Linux centosVMware Apache 配置防盗链、访问控制Directory、访问控制FilesMatch

    一.配置防盗链 通过限制referer来实现防盗链的功能 配置文件增加如下内容 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //改为如下 ...

  10. 使用注解的形式搭建一个springMVC框架

    1.创建SpringMVC的配置文件springmvc-servlet <?xml version="1.0" encoding="UTF-8"?> ...