当前位置: 首页 > news >正文

Java-spring注解的作用

1.@Qualifier:通常与@Autowired搭配使用,通过指定具体的beanName来注入相应的bean

当容器中有多个类型相同的Bean时,可以使用@Qualifier注解来指定需要注入的Bean。@Qualifier注解可以用于字段、方法参数、构造函数参数等位置

@Service
public class UserService {@Autowired@Qualifier("userServiceImpl")private UserMapper userMapper ;public User getUserById(Int id) {return userRepository.findById(id).orElse(null);}// Other business methods...
}

上面的示例中,@Qualifier注解用于指定需要注入的Bean的名称为“userServiceImpl”。需要注意的是,@Qualifier注解通常与@Autowired或@Inject注解一起使用,用于在多个匹配的Bean中进行选择。

如果没有指定@Qualifier注解,Spring框架将使用默认的自动装配策略,即按照类型进行匹配。如果有多个类型相同的Bean,Spring框架将抛出异常。

因此,使用@Qualifier注解可以有效地解决这个问题。

2.@Bean是一个注解,用于告诉 Spring 框架将标注的方法返回的对象注册为一个 Bean(组件)

具体的作用:

①.使用 @Bean 注解可以将方法返回的对象注册为一个 Bean,并且该 Bean 会被 Spring 容器管理

②.依赖注入:当其他组件需要使用这个 Bean 时,Spring 框架会自动将该 Bean 注入到相应的位置,实现依赖注入

③.自定义组件配置:通过 @Bean 注解可以对 Bean 进行自定义配置,例如设置属性值、初始化方法、销毁方法等

④.替代 XML 配置:需要通过 XML 配置文件来定义和配置 Bean,而现在通过 @Bean 注解可以在 Java 代码中实现同样的功能,避免了繁琐的 XML 配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cloud.bus.auto.mapper.IUserMapper"><resultMap id="BaseResultMap" type="com.cloud.bus.common.entity.TUser"><id column="ID" jdbcType="VARCHAR" property="id" /><result column="ACCT_SCOPE" jdbcType="VARCHAR" property="acctScope" /><result column="CONFIG_STATUS" jdbcType="VARCHAR" property="configStatus" /><result column="IS_MERGE" jdbcType="VARCHAR" property="isMerge" /><result column="LAST_ACCT_DATE" jdbcType="DATE" property="lastAcctDate" /><result column="HAPPENED_YEAR" jdbcType="VARCHAR" property="happenedYear" /></resultMap><sql id="Base_Column_List">ID, HOSPITAL_ID, ACCT_SCOPE, CONFIG_STATUS, IS_MERGE, SCHEDULE_ACCT_DATE,LAST_ACCT_DATE,LAST_OPERATE_DATE,HAPPENED_YEAR</sql><update id="updateUser">update T_User<set><if test="hospitalId != null and hospitalId != ''">HOSPITAL_ID = #{hospitalId,jdbcType=VARCHAR},</if>//.......<if test="runAcctDate != null and runAcctDate != ''">RUN_ACCT_DATE = #{runAcctDate,jdbcType=VARCHAR},</if></set>where ID = #{id,jdbcType=VARCHAR}</update><select id="queryUserList" resultType="com.cloud.bus.common.vo.UserVO">select<include refid="Base_Column_List"/>from T_User<include refid="Example_Where_Clause"/></select><sql id="Example_Where_Clause"><trim prefix="where" prefixOverrides="and|or"><if test="hospitalId != null and hospitalId != ''">and HOSPITAL_ID = #{hospitalId,jdbcType=VARCHAR}</if><if test="operatorType != null and operatorType != ''">and OPERATOR_TYPE = #{operatorType,jdbcType=VARCHAR}</if><if test="acctScope != null and acctScope != ''">and ACCT_SCOPE = #{acctScope,jdbcType=VARCHAR}</if>     </trim></sql>
</mapper>

3.@Configuration 注解的主要作用是指示Spring容器,该类是一个配置类,它包含了一个或多个Spring容器所需的bean定义。

这意味着@Configuration 注解用于定义Spring应用程序的配置信息,通常在Java类中进行配置而不是在XML文件中

@Configuration 注解的作用包括

①.定义Bean:在@Configuration 注解的类中,您可以使用@Bean 注解来定义一个或多个bean。这些bean将被Spring容器托管,可以在应用程序中使用

②.组织配置@Configuration 注解使您能够将应用程序的配置集中到一个或多个Java类中,以便更好地组织和管理配置信息。这有助于提高代码的可维护性和可读性

③.替代XML配置@Configuration 注解可以用来替代传统的XML配置文件。通过使用Java类来配置应用程序,您可以获得更强的类型安全性,并且可以利用Java的特性,如条件化配置、注解等

④.支持自动装配:@Configuration 注解通常与@Autowired 注解一起使用,以实现自动装配(依赖注入)。当一个配置类被Spring容器扫描到时,其中的@Bean 方法将被调用,创建bean实例,并自动装配它们的依赖关系。

⑤.集成外部配置:通过@Configuration 注解,您可以将外部配置(如属性文件或环境变量)与应用程序的配置进行集成。Spring提供了@PropertySource 注解来加载外部属性文件,以及@Value 注解来注入属性值


@Configuration
public class ApplicationConfig {@Beanpublic UserService userService() {return new UserServiceImpl();} 
}

相关文章:

Java-spring注解的作用

1.Qualifier&#xff1a;通常与Autowired搭配使用&#xff0c;通过指定具体的beanName来注入相应的bean 当容器中有多个类型相同的Bean时&#xff0c;可以使用Qualifier注解来指定需要注入的Bean。Qualifier注解可以用于字段、方法参数、构造函数参数等位置 Service public cl…...

Allegro如何把Symbols,shapes,vias,Clines,Cline segs等多种元素一起移动

Allegro如何把Symbols,shapes,vias,Clines,Cline segs等多种元素一起移动 在用Allegro进行PCB设计时,有时候需要同时移动某个区域的所有元素,如:Symbols,shapes,vias,Clines,Cline segs等元素。那么如何操作呢? 首先就是把Symbols,shapes,vias,Clines,Cline …...

【力扣】罗马数字转整数,哈希集合+模拟

罗马数字转整数原题地址 方法一&#xff1a;模拟 罗马数字是字符串&#xff0c;其中每个字符都对应一个整数值&#xff0c;为了方便查找&#xff0c;可以预先把这种对应关系存储到哈希表中。 遍历字符串&#xff0c;对于每个字符&#xff0c; 如果该字符不是最右边的字符&a…...

从长网址到短链接:探索网址缩短的神奇世界

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 从长网址到短链接&#xff1a;探索网址缩短的神奇世界 前言网址缩短的原理和历史网址缩短的应用场景网址缩短的安全风险网址缩短的未来趋势 前言 你是否曾经在浏览网页或社交媒体时遇到过一串看起来像…...

Micro micro controller一览

https://www.microchip.com.cn/&#xff0c; Microchip中文网站 https://www.microchip.com.cn/newcommunity/index.php?mSearch&adosearch&moduleDownload&keyworddsPIC33&p3 Microcontrollers and microProcessors dsPIC33 Digital Signal Controllers (D…...

一文简介Maven初级使用

一.概述 Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构提供了一套标准化的项目构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布&#xff09;提供了一套依赖管理机制 一方面&…...

Django的配置文件setting.py

BASE_DIR 项目路径&#xff1a;默认是已经打开的主项目路径 ​​​​​​​BASE_DIR os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY 密钥 SECRET_KEY (dh&_fm2hfn9y)35!_6#$a7q%%^onoy#-a8x18r4(6*8f(aniDEBUG 帮助调试&#xff0c;默认…...

2024-02-06(Sqoop)

1.Sqoop Apache Sqoop是Hadoop生态体系和RDBMS&#xff08;关系型数据库&#xff09;体系之间传递数据的一种工具。 Sqoop工作机制是将导入或者导出命令翻译成MapReduce程序来实现。在翻译出的MapReduce中主要是对inputformat和outputformat进行定制。 Hadoop生态包括&#…...

C++ 11新特性之tuple

概述 在C编程语言的发展历程中&#xff0c;C 11标准引入了许多开创性的新特性&#xff0c;极大地提升了开发效率与代码质量。其中&#xff0c;tuple&#xff08;元组&#xff09;作为一种强大的容器类型&#xff0c;为处理多个不同类型的值提供了便捷的手段。tuple是一种固定大…...

Spring Boot项目整合Seata AT模式

目录 1、添加依赖2.、配置Seata3、创建AT模式表4、使用Seata分布式事务 1、添加依赖 <dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId></dependency>上述依赖适用于springboot项目 如果你的项…...

作业2.5

第四章 堆与拷贝构造函数 一 、程序阅读题 1、给出下面程序输出结果。 #include <iostream.h> class example {int a; public: example(int b5){ab;} void print(){aa1;cout <<a<<"";} void print()const {cout<<a<<endl;} …...

LeetCode、790. 多米诺和托米诺平铺【中等,二维DP,可转一维】

文章目录 前言LeetCode、790. 多米诺和托米诺平铺【中等&#xff0c;二维DP&#xff0c;可转一维】题目与分类思路二维解法二维转一维 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质…...

Python 的 sys 模块常用方法

sys.argv&#xff1a; 命令行参数 List&#xff0c;第一个元素是程序本身路径 sys.modules.keys()&#xff1a; 返回所有已经导入的模块列表 sys.exc_info() &#xff1a;获取当前正在处理的异常类 exc_type、exc_value、exc_traceback 当前处理的异常详细信息 sys.exit(n)&…...

Kafka 使用手册

kafka3.0 文章目录 kafka3.01. 什么是kafka&#xff1f;2. kafka基础架构3. kafka集群搭建4. kafka命令行操作主题命令行【topic】生产者命令行【producer】消费者命令行【consumer】 5. kafka生产者生产者消息发送流程Producer 发送原理普通的异步发送带回调函数的异步发送同步…...

STM32F407移植OpenHarmony笔记7

继上一篇笔记&#xff0c;成功启动了liteos_m内核&#xff0c;可以创建线程了&#xff0c;也能看到shell控制台了。 今天研究文件系统&#xff0c;让控制台相关文件命令如mkdir和ls能工作。 liteos_m内核支持fatfs和littlefs两个文件系统&#xff0c; fatfs适用于SD卡&#xff…...

cortexM c语言和汇编嵌套编程

编程环境是&#xff1a;stm32cubeIde 原因&#xff1a;很多操作需要使用底层来做&#xff0c;比如中断时的上下文数据保存。也就是说用到汇编来实现。 疑问&#xff1a;c语言怎么才能跟汇编很好的兼容在一起呢&#xff1f;必将是我下一步的必经探索之路了。 一、C语言和汇编…...

国外传输大文件必选工具

企业在全球范围内的业务拓展带来了前所未有的机遇&#xff0c;同时也带来了跨国文件传输的挑战。大文件的高效、安全传输成为了企业亟需解决的问题。本文将深入探讨传统传输方式的局限性&#xff0c;云存储服务的便捷与挑战&#xff0c;以及专用文件传输软件的创新&#xff0c;…...

Redis渗透SSRF的利用

Redis是什么&#xff1f; Redis是NoSQL数据库之一&#xff0c;它使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。默认端口是&#xff1a;6379 工具安装 下载地址&#xff1a; http://download.redis.io/redis-stable.tar.gz然…...

【深度学习】基于PyTorch架构神经网络学习总结(基础概念基本网络搭建)

神经网络整体架构 类似于人体的神经元 神经网络工作原来为层次结构&#xff0c;一层一层的变换数据。如上述示例有4层&#xff0c;1层输入层、2层隐藏层、1层输出层神经元&#xff1a;数据的量或矩阵的大小&#xff0c;如上述示例中输入层中有三个神经元代表输入数据有3个特征…...

专业排版设计软件:QuarkXPress 2024 for mac中文激活版

QuarkXPress 2024 for Mac是一款功能强大、易于使用、高质量输出的专业排版软件。无论您是出版业的专家还是初学者&#xff0c;都可以通过QuarkXPress 2024轻松创建出令人惊叹的出版物。 软件下载&#xff1a;QuarkXPress 2024 for mac中文激活版下载 QuarkXPress 2023 for Mac…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...