【spring】@Resource注解学习

@Resource介绍

在Spring框架中,@Resource 注解是一个JSR-250标准注解,用于自动装配(autowiring)Spring容器中的bean。@Resource 注解可以用于字段、方法和方法参数上,以声明依赖注入。

@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注解使用场景

  1. 数据库连接池注入:在 Java 应用中,数据库连接池是一个常见的资源。使用 @Resource 注解可以将数据库连接池注入到需要使用数据库连接的类中。

  2. JNDI 资源注入:Java Naming and Directory Interface(JNDI)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,如DNS、LDAP、NIS、CORBA 对象服务等。使用 @Resource 注解可以将 JNDI 资源注入到 JavaBean 中。

  3. 事务管理器注入:在 Java 应用中,事务管理器是一个重要的资源。使用 @Resource 注解可以将事务管理器注入到需要进行事务管理的类中。

  4. 其他资源注入:除了上述资源外,@Resource 注解还可以用于将其他类型的资源注入到 JavaBean 中,如文件资源、网络资源等。

@Resource测试示例代码

示例代码 一

ResourceDemoService类
package com.yang.SpringTest.annotation.resourceLean;

/**
 * <p>ResourceDemoService类</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.resourceLean
 * Ceate Time 2024-04-12 16:23
 */
public interface ResourceDemoService {
    void demo();
}
ResourceDemoServiceAImpl类
package com.yang.SpringTest.annotation.resourceLean;

import org.springframework.stereotype.Service;

/**
 * <p>ResourceDemoServiceAImpl类</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.resourceLean
 * Ceate Time 2024-04-12 16:26
 */
@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;

/**
 * <p>ResourceDemoServiceBImpl类</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.resourceLean
 * Ceate Time 2024-04-12 16:26
 */
@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;

/**
 * <p>ResourceDemoController类</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.resourceLean
 * Ceate Time 2024-04-12 16:27
 */
@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;

/**
 * <p>ResourceDemoConfig配置类</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.resourceLean
 * Ceate Time 2024-04-12 16:31
 */
@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;

/**
 * <p>ResourceDemoTest测试类</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.annotation.resourceLean
 * Ceate Time 2024-04-12 16:32
 */
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 ();
    }

}

运行结果




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/538612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态规划解决背包问题

目录 动态规划步骤&#xff1a; 1.01背包问题 2.完全背包问题 动态规划步骤&#xff1a; step1.分析问题&#xff0c;定义dp数组&#xff08;下标含义&#xff09; step2.初始化dp数组&#xff08;边界&#xff09; step3.写dp状态转换方程&#xff08;明确dp数组遍历顺序…

【每日刷题】Day11

【每日刷题】Day11 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; 目录 1. 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 2. 976. 三角形的最大周长 - 力扣&#xff08;LeetCode&#xff09; 3.…

通信安全之数据加密

数据安全的需求如今越来越重要&#xff0c;本篇简单举例给日常的TCP/UDP通信加密&#xff0c;至少能让想干坏事的崽犯罪的成本更高一些&#xff08;如果会一些BPF的&#xff0c;可能难不住这些崽&#xff09;&#xff0c;能让我们的数据更安全一点。 经典TCP socket编程 下面…

In Memoriam Fabrizio Flacco

一、背景 最近在看人机协作相关的论文&#xff0c;其中有一篇是Arash Ajoudani于2018发表在Autonomous Robots题为Progress and prospects of the human–robot collaboration的综述。当看到最后Acknowledgements部分&#xff0c;有一句话是The authors would like to thank a…

小样本计数网络FamNet(Learning To Count Everything)

小样本计数网络FamNet(Learning To Count Everything) 大多数计数方法都仅仅针对一类特定的物体&#xff0c;如人群计数、汽车计数、动物计数等。一些方法可以进行多类物体的计数&#xff0c;但是training set中的类别和test set中的类别必须是相同的。 为了增加计数方法的可拓…

基于tcmalloc的高并发内存池

内存池 池化技术&#xff1a; 池是在计算机技术中经常使用的一种设计模式&#xff0c;其内涵在于&#xff1a;将程序中需要经常使用的核心资源 先申请出来&#xff0c;放到一个池内&#xff0c;由程序自己管理&#xff0c;这样可以提高资源的使用效率&#xff0c;也可以保证本程…

【新版HI3559AV100开发注意事项(四)】

新版HI3559AV100开发注意事项&#xff08;四&#xff09; 三十、HI3559A参数中对输入分辨率限制的原因是&#xff1f; 答&#xff1a;分辨率限制有两个来源&#xff1a; 一个是时钟频率最高为600M&#xff0c;开启一拍两像素之后相当于1200M。你这个数据量太大了&#xff0c;6…

【IR-SDE】Image Restoration SDE项目演示运行app.py

背景&#xff1a; code:GitHub - Algolzw/image-restoration-sde: Image Restoration with Mean-Reverting Stochastic Differential Equations, ICML 2023. Winning solution of the NTIRE 2023 Image Shadow Removal Challenge. paper: Official PyTorch Implementations o…

Terraform 语法配置

配置语法 Terraform 的配置文件都是以 .tf 为后缀Terraform 支持两种模式 HCL、JSON Provider 插件 providers 地址&#xff1a;Terraform Registry Terraform 通过 provider 管理基础设施&#xff0c;使用 provider 与云供应商 API 进行交互&#xff0c;每个 Provider 都包含…

2024年DeFi的四大主导趋势:Restaking、Layer3、AI和DePin

DeFi&#xff08;去中心化金融&#xff09;行业在2024年将继续呈现快速增长的势头&#xff0c;驱动这一增长的主要因素将是四大主导趋势&#xff1a;Restaking、Layer3、AI和DePin。这些趋势将推动DeFi生态系统的发展&#xff0c;为用户提供更多的机会和创新。 趋势1&#xff…

JavaScript函数式编程

函数式编程 课程介绍 为什么要学习函数编程以及什么是函数式编程函数式编程的特性(纯函数、柯里化、函数组合等)函数式编程的应用场景函数式编程库Lodash 为什么要学习函数式编程 函数式编程是非常古老的一个概念&#xff0c;早于第一台计算机的诞生&#xff0c; 函数式编程…

有图片转成PDF文件格式的方法吗?分享图片转成PDF文件的方法

将图片转换为PDF文件是一个相对简单的过程&#xff0c;但也需要一定的步骤和注意事项。下面&#xff0c;我将详细介绍如何将图片转换为PDF文件&#xff0c;包括所需的工具、步骤以及可能遇到的问题和解决方案。 首先&#xff0c;我们需要一个能够将图片转换为PDF文件的工具。市…

SV-704XT 100W网络有源音柱 校园广播音柱

SV-704XT 100W网络有源音柱 一、描述 SV-704XT是深圳锐科达电子有限公司的一款壁挂式网络有源音柱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带的功放和喇叭输出播放&#xff0c;其采用防水设计&#xff0c;功率100W。SV-704XT作为网络广播播放系统的终…

分布式强化学习

标题 易混淆概念联邦学习与强化学习1&#xff09;联邦学习应用于强化学习2&#xff09;强化学习应用于联邦学习 时空图卷积网络&#xff08;ST-GCN&#xff09;基本概念结合训练 易混淆概念 DistributionalRL是分布RL&#xff0c;不是分布式RL。分布RL是把Q值从一个期望构建成…

程序员搞副业你可以这样做

程序员搞副业你可以这样做 文章目录 程序员搞副业你可以这样做01/开发外包项目02/开源项目赢取打赏盈利模式之一&#xff1a;多种产品线盈利模式之二&#xff1a;技术服务型盈利模式之三&#xff1a;应用服务托管&#xff08;ASP&#xff09;盈利模式之四&#xff1a;软、硬件一…

边缘计算网关究竟是什么呢?它又有什么作用呢?-天拓四方

在数字化时代&#xff0c;信息的传输与处理变得愈发重要&#xff0c;而其中的关键节点之一便是边缘计算网关。这一先进的网络设备&#xff0c;不仅扩展了云端功能至本地边缘设备&#xff0c;还使得边缘设备能够自主、快速地响应本地事件&#xff0c;提供了低延时、低成本、隐私…

20240412,引用,函数高级

老子什么时候能找到一个很爱我还和我一样喜欢看日出日落的对象 一&#xff0c;引用 给变量起别名&#xff0c;数据类型 & 别名原名&#xff1b;引用一定要初始化&#xff0c;初始化之后不能更改 #include <iostream> using namespace std; int main() {int a 10;i…

PostgreSQL入门到实战-第二十一弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(五)官网地址PostgreSQL概述PostgreSQL中RIGHT JOIN命令理论PostgreSQL中RIGHT JOIN命令实战更新计划 PostgreSQL中表连接操作(五) 使用PostgreSQL RIGHT JOIN连接两个表&#xff0c;并从右表返回行 官网地址 声明: 由于操作系统…

【前沿模型解析】潜在扩散模型 2-3 | 手撕感知图像压缩 基础块 自注意力块

1 注意力机制回顾 同ResNet一样&#xff0c;注意力机制应该也是神经网络最重要的一部分了。 想象一下你在观看一场电影&#xff0c;但你的朋友在给你发短信。虽然你正在专心观看电影&#xff0c;但当你听到手机响起时&#xff0c;你会停下来查看短信&#xff0c;然后这时候电…

CSS特效---纯CSS实现点击切换按钮

1、演示 2、一切尽在代码中 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"w…