Spring框架@Resource注解详解与实战
创作时间:
作者:
@小白创作中心
Spring框架@Resource注解详解与实战
引用
CSDN
1.
https://m.blog.csdn.net/wochunyang/article/details/137639720
@Resource注解是Spring框架中用于自动装配bean的重要注解,遵循JSR-250标准。它支持字段、方法和方法参数级别的依赖注入,是开发Spring应用时不可或缺的工具。本文将从源码层面深入解析@Resource注解的各个属性,并通过实际代码示例展示其具体应用场景。
@Resource注解介绍
@Resource注解是一个JSR-250标准注解,用于自动装配(autowiring)Spring容器中的bean。它可以用于字段、方法和方法参数上,以声明依赖注入。
@Resource注解源码
@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
@Repeatable(Resources.class)
public @interface Resource {
String name() default "";
String lookup() default "";
Class<?> type() default java.lang.Object.class;
enum AuthenticationType {
CONTAINER,
APPLICATION
}
AuthenticationType authenticationType() default AuthenticationType.CONTAINER;
boolean shareable() default true;
String mappedName() default "";
String description() default "";
}
@Resource注解属性介绍
- name:资源的JNDI名称,装配指定名称的Bean。
- type:装配指定类型的Bean。
- lookup:引用指向的资源名称,可以使用JNDI名称指向任何兼容的资源。
- AuthenticationType:指定身份验证类型。
- shareable:指定当前Bean是否可以在多个组件之间共享。
- mappedName:指定资源的映射名称。
- description:指定资源的描述。
@Resource注解使用场景
- 数据库连接池注入:在Java应用中,数据库连接池是一个常见的资源。使用@Resource注解可以将数据库连接池注入到需要使用数据库连接的类中。
- JNDI资源注入:Java Naming and Directory Interface(JNDI)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,如DNS、LDAP、NIS、CORBA对象服务等。使用@Resource注解可以将JNDI资源注入到JavaBean中。
- 事务管理器注入:在Java应用中,事务管理器是一个重要的资源。使用@Resource注解可以将事务管理器注入到需要进行事务管理的类中。
- 其他资源注入:除了上述资源外,@Resource注解还可以用于将其他类型的资源注入到JavaBean中,如文件资源、网络资源等。
@Resource注解测试示例代码
ResourceDemoService接口
package com.yang.SpringTest.annotation.resourceLean;
public interface ResourceDemoService {
void demo();
}
ResourceDemoServiceAImpl实现类
package com.yang.SpringTest.annotation.resourceLean;
import org.springframework.stereotype.Service;
@Service("resourceDemoServiceA")
public class ResourceDemoServiceAImpl implements ResourceDemoService {
@Override
public void demo () {
System.out.println ("===== ResourceDemoServiceAImpl.demo...");
}
}
ResourceDemoServiceBImpl实现类
package com.yang.SpringTest.annotation.resourceLean;
import org.springframework.stereotype.Service;
@Service("resourceDemoServiceB")
public class ResourceDemoServiceBImpl implements ResourceDemoService {
@Override
public void demo () {
System.out.println ("===== ResourceDemoServiceBImpl.demo...");
}
}
ResourceDemoController控制器
package com.yang.SpringTest.annotation.resourceLean;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
@Controller
public class ResourceDemoController {
@Resource(name = "resourceDemoServiceB")
private ResourceDemoService resourceDemoService;
public void demo () {
resourceDemoService.demo ();
}
}
ResourceDemoConfig配置类
package com.yang.SpringTest.annotation.resourceLean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(value = {"com.yang.SpringTest.annotation.resourceLean"})
public class ResourceDemoConfig {
}
ResourceDemoTest测试类
package com.yang.SpringTest.annotation.resourceLean;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.Arrays;
public class ResourceDemoTest {
public static void main (String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext (ResourceDemoConfig.class);
String[] definitionNames = context.getBeanDefinitionNames ();
Arrays.stream (definitionNames).forEach ((definitionName) -> System.out.println (definitionName));
System.out.println ("--------------------");
ResourceDemoController resourceDemoController = context.getBean (ResourceDemoController.class);
resourceDemoController.demo ();
context.close ();
}
}
运行结果
热门推荐
驾考体检检查哪些项目
智齿被蛀空了怎么办?处理方式还要看智齿是“好”还是“坏”!
ESXi虚拟机显卡直通配置详解
皮肤有小丘疹、红肿、脓疱,可能毛囊炎在作怪,远离5个常见诱因
比特币交易中的合规性评估指标
2025生物信息学专业本科院校排行榜及2024年录取分数线
蒙古骑兵横行欧亚的奥秘:逆天的战斗力,来源于这2项制度原则
如何快速知道对方是什么样的人?
德州天衢新区、菏泽鲁西新区规划印发!山东省级新区建设拉开大幕
如何分辨细菌和真菌感染
无线对讲系统频段的划分与应用
茶叶草酸含量高会导致肾结石?专家为你解读
消除误解:关于益生菌的10个传言和误解
家装电工必知:家用配电箱电气系统图识图详解
中国铁路“超能力”,助你顺利回家过年
如何培养积极心态以面对挑战
智慧政务系统平台:打造高效、透明政务服务新纪元
斗破苍穹各大境界都有什么特征?斗王斗气化翼,斗帝一人振兴家族
【记忆化搜索】记忆化搜索算法的对比及总结
“终身工作”会成为未来常态吗?
理性VS中二:俾斯麦和威廉二世外交差异的深层原因
微信搜一搜SEO优化关键词排名如何做?
十大经典相声段子,经典的评书文本段子
67岁老人常年吃氨氯地平,擅自换药肾衰竭!这些降压药知识需清楚
中国不同历史时期重大土木工程:南京长江大桥
OCR技术实现文字快速提取解析
卧推80公斤算合格吗?如何衡量卧推标准?
如何让团队工作有回应
突破科技边界:中国团队成功合成高硬度六方金刚石
如何挑选一件既时尚又保暖的毛衣:色彩、材质、款式与搭配全指南