@Autowired与@Resource的区别

1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

Java代码

@Autowired() @Qualifier("baseDao")
private BaseDao baseDao;

3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

Java代码

@Resource(name="baseDao")
private BaseDao baseDao;

他们的主要区别就是@Autowired是默认按照类型装配的 @Resource默认是按照名称装配的byName 通过参数名 自动装配,如果一个bean的name 和另外一个bean的 property 相同,就自动装配。byType 通过参数的数据类型自动自动装配,如果一个bean的数据类型和另外一个bean的property属性的数据类型兼容,就自动装配

@Resource注解属于J2EE的,减少了与spring的耦合。

时间: 2024-10-26 03:04:57

@Autowired与@Resource的区别的相关文章

Autowired与Resource的区别

1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上.  2.@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:  Java代码   1.  @Autowired() @Qualifie

《Spring攻略(第2版)》——1.12 用@Autowired和@Resource自动装配Bean

1.12 用@Autowired和@Resource自动装配Bean 1.12.1 问题 在Bean配置文件中设置autowire属性进行的自动装配将装配一个Bean的所有属性.这样的灵活性不足以仅仅装配特定的属性.而且,你只能通过类型或者名称自动装配Bean.如果这两种策略都不能满足你的需求,就必须明确地装配Bean. 1.12.2 解决方案 从Spring 2.5起,自动装配功能进行了多处改进.你可以通过用@Autowired或者@Resource(在JSR-250:Java平台常见注解中定

注解,@Qualifier+@Autowired 和 @Resource

项目中,对于AOP的使用,就是通过用注解来注入的. 更改之前的注解,是使用:@Qualifier+@Autowired   但是,通过这样注解,在项目启动阶段,需要自动扫描的过程是非常缓慢的,项目的启动时间为:227756ms   227秒 可以说,算是缓慢了.更改任何一个问题,只要是需要重启的时候,都需要浪费很长的时间去等待项目的部署和重启. 今天,公司的架构师,更改了注解的方式, 使用:@Resource 然后,更改后项目的启动时间明显缩短了,项目的启动时间是:95696ms 95秒 可以说

Spring @Autowired、@Resource、@Required、@Component、@Repository、@Service、@Controller注解的用法和作用

Spring @Autowired,@Resource,@Required注解的用法和作用 Spring中 @Autowired标签与 @Resource标签 的区别 Spring注解@Component.@Repository.@Service.@Controller区别

@resource和@autowired的区别是什么

问题描述 @autowired和@resource的区别 解决方案 解决方案二:@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按byName自动注入罢了.@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型.所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用by

【浅谈JavaEE框架】Spring中@Autowired标签与@Resource标签的区别

@Autowired  Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作.  通过 @Autowired的使用来消除 set ,get方法.   要实现我们要精简程序的目的. @Autowired默认按照类型进行注入 @Autowired @Qualifier("personDaoxxx")这样就是按照名称进行装配 @Autowired(required=true)必须注入值,不能为null,为false无论注入什

Spring中 @Autowired标签与 @Resource标签 的区别

Spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource. @PostConstruct及@PreDestroy. 1. @Autowired    @Autowired是Spring 提供的,需导入    Package:org.springframework.beans.factory.annotation.Autowired;    只按照byType 注入.2. @Resource    @Resource默认按 byNam

注解装配-@Inject注解不能用,@Autowired注解可以

问题描述 @Inject注解不能用,@Autowired注解可以 为什么使用@Autowired可以,而换成@Inject就会出错,使用@Inject需要什么条件 或者什么配置吗! 解决方案 把inject注解所在的jar包 import进来 解决方案二: @Autowired注解@Resource,@Autowired注解@Autowired或@Resource注解 解决方案三: http://blog.csdn.net/u013516966/article/details/39405513

spring-关于Resource注入原型对象的问题

问题描述 关于Resource注入原型对象的问题 spring初学者,发现一个spring(或javaEE)关于注入原型对象的问题.请大牛们帮忙看看是我理解不对,还是spring或者javaEE的bug? 背景: 1.定义两个类分别是A和B,同时这两个类都定义为原型(即:scope="prototype"): 2.A中一个属性定义的为B类型,即:A实例的创建过程中是需要注入一个B实例到A中的: 3.spring使用的3.1.2.RELEASE版本,jdk为1.6.0_10 测试方法及结