【Java注解】注解 @Resource

本文介绍了JavaEE中的@Resource注解,它用于依赖注入资源。文章详细讲述了注解的起源、示例、用法、注意事项以及英文解释,并提供了官方文档链接。

注解 @Resource

1. 注解由来:

@Resource 是 JavaEE 标准中提供的一种注解,用于进行依赖注入。通过使用 @Resource 注解,可以在类中标识需要注入的资源或依赖项,并由容器自动进行注入。

2. 注解示例:

@Resource
private DataSource dataSource;

在上述示例中,dataSource 被标记为一个需要注入的资源,使用 @Resource 注解告知容器进行注入。

3. 注解用法和注意事项:

  • @Resource 注解可以用于字段、方法、构造函数等地方,用于标识需要注入的资源或依赖项。
  • 可以通过指定 name 属性或者 lookup 属性来精确指定要注入的资源的名称或 JNDI 位置。
  • 如果没有明确指定 namelookup 属性,@Resource 注解会根据属性名进行自动匹配。

4. 注解的英文解释:

The English explanation of @Resource annotation is “Marks a resource that is needed by the application component (such as a bean) to be injected”.

5. 注解的官方链接:

你可以在 JavaEE 标准文档中查看 @Resource 注解的详细说明:https://jakarta.ee/specifications/platform/8/apidocs/javax/annotation/Resource.html

### Java注解@Resource介绍、使用方法 - **介绍**:@ResourceJava EE 标准(JSR - 250)定义的依赖注入注解Spring 框架对其进行了支持。核心作用是通过名称或类型匹配 Bean,解决多 Bean 场景下的依赖注入问题 [^1]。 - **使用方法**:可用于成员变量以及 set 方法。若不指定 name 属性,则会把 name 属性值处理为字段名或 set 方法标识的字段名称;若指定 type 属性,则 type 属性值必须与字段类型或 set 方法返回值类型为父子关系(type 属性值可以是子类,也可以是超类),否则会抛出异常。@Resource 先按照 name 属性值注入,若未找到,则按 type 属性值注入,即默认的 name 或指定的 name 找不到 bean,就会按 type 注入 [^3]。 以下是一个简单的使用示例: ```java import javax.annotation.Resource; public class MyClass { // 不指定name属性,默认按字段名注入 @Resource private MyBean myBean; // 指定name属性注入 @Resource(name = "anotherBean") private AnotherBean anotherBean; // 指定type属性注入 @Resource(type = SomeInterface.class) private SomeInterface someInterface; } ``` ### Java注解@Lazy介绍、使用方法 - **介绍**:@Lazy 注解用于实现懒加载。当与 @Autowired 或者 @Resource 合用时,依赖创建的是代理对象(目标对象是 TargetSource),在执行时,执行的是代理对象,在 `invoke(Object proxy, Method method, Object[] args)` 中执行 `targetSource.getTarget()` 时才去 beanFactory 中依赖查找 bean [^2]。 - **使用方法**:通常与 @Autowired 或 @Resource 一起使用,也可以用于配置类的 Bean 定义上。 以下是使用示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component public class MyService { // 与@Autowired合用 @Autowired @Lazy private MyRepository myRepository; } ``` ### @Resource和@Lazy的区别 - **功能不同**:@Resource 主要用于依赖注入,解决多 Bean 场景下的依赖注入问题;而 @Lazy 主要用于实现懒加载,延迟 Bean 的创建 [^1][^2]。 - **使用场景不同**:@Resource 用于需要注入 Bean 的地方,如成员变量、set 方法;@Lazy 通常与依赖注入注解一起使用,或者用于配置类的 Bean 定义,实现 Bean 的延迟加载 [^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值