浅谈@Autowired与@Resource

一、起源

@Resource

JSR 250规范中包含了@Resource注解的定义,它提供了一个标准的注解,用于在Java EE应用中进行资源注入‌。Java EE 5(约合JDK1.5)实现了这个定义。JDK1.8之后将Java EE从JDK中移除。

JSR 250规范内容

@Generated 标记该资源是自动生成的

@Resource 定义了对某个资源的引用

@Resources 容器针对多资源的注解

@PostConstruct 标记在方法上用于依赖注入的初始化动作

@PreDestroy 标记在方法上用于该对象实例从容器销毁时的前置操作

@Priority 定义了该类执行的优先级,比如拦截器的优先级等

@RunAs 定义了应用在Java EE容器运行时的角色

@RolesAllowed 定义了什么安全角色被允许执行方法

@PermitAll 标记在类或方法上允许所有角色执行(所有)方法

@DenyAll 标记在方法上不允许所有角色调用

@DeclareRoles 用于定义系统的安全角色

@DataSourceDefinition 定义一个数据源,并通过JNDI注册到容器

@ManagedBean 定义一个被容器管理的对象

@Autowired

从Spring2.5开始支持,Spring认为只有@Resource是不行的,因此推出了“粒度”更大的@Autowired。

二、区别

  • @Autowired 先根据类型(byType)查找,如果存在多个(Bean)再根据名称(byName)进行查找。
  • @Resource 先根据名称(byName)查找,如果(根据名称)查找不到,再根据类型(byType)进行查找。

三、辅助注解

@Qualifier

Spring框架中的一个注解,用于指定具体的Bean,当有多个同类型的Bean时,它可以辅助Spring容器确定依赖注入的确切目标,常与@Autowired组合使用。

@Primary

Spring框架中的一个注解,用于标识一个Bean作为默认的实现类,当存在多个实现类时,通过使用@Primary注解,可以指定其中一个作为默认的实现类,以便在注入时自动选择该实现类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值