@ConfigurationProperties加在方法上
@ConfigurationProperties注解通常用于将外部配置文件(如application.properties或application.yml)中的属性映射到Java类中。它通常加在类上,但也可以加在方法上。加在方法上时,通常与@Bean注解一起使用,以便将配置属性注入到Spring容器中的Bean中。
示例:将@ConfigurationProperties加在方法上
以下是一个完整的示例,展示如何将@ConfigurationProperties注解加在方法上,并将配置属性注入到Spring容器中的Bean中。
1. 创建配置属性类
首先,创建一个简单的配置属性类,用于映射外部配置文件中的属性。
import org.springframework.boot.context.properties.ConfigurationProperties;@ConfigurationProperties(prefix = "app")
public class AppProperties {private String name;private String version;// Getters and Setterspublic String getName() {return name;}public void setName(String name) {this.name = name;}public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}
}
2. 创建配置类
创建一个配置类,并在方法上使用@ConfigurationProperties注解和@Bean注解。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;@Configuration
@EnableConfigurationProperties
public class AppConfig {@Bean@ConfigurationProperties(prefix = "app")public AppProperties appProperties() {return new AppProperties();}
}
3. 配置文件
在application.properties或application.yml文件中添加配置属性。
application.properties
app.name=MyApp
app.version=1.0.0
application.yml
app:name: MyAppversion: 1.0.0
4. 使用配置属性
在你的应用程序中,你可以通过注入AppProperties来使用这些配置属性。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class AppService {private final AppProperties appProperties;@Autowiredpublic AppService(AppProperties appProperties) {this.appProperties = appProperties;}public void printAppProperties() {System.out.println("App Name: " + appProperties.getName());System.out.println("App Version: " + appProperties.getVersion());}
}
5. 运行应用
在你的应用程序中调用AppService的printAppProperties方法来打印配置属性。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;@Component
public class AppRunner implements CommandLineRunner {private final AppService appService;@Autowiredpublic AppRunner(AppService appService) {this.appService = appService;}@Overridepublic void run(String... args) throws Exception {appService.printAppProperties();}
}
总结
- 配置属性类:创建一个简单的类,用于映射外部配置文件中的属性。
- 配置类:在方法上使用
@ConfigurationProperties注解和@Bean注解,将配置属性注入到Spring容器中的Bean中。 - 配置文件:在
application.properties或application.yml文件中添加配置属性。 - 使用配置属性:通过注入配置属性类来使用这些配置属性。
在Spring框架中,@Autowired 注解通常用于自动注入依赖。虽然它通常用于类的字段或构造函数上,但也可以用于方法参数上。@Autowired 加在形参上的用法也是合法的,并且可以与 @Qualifier 注解一起使用,以指定具体的bean。
以下是一个示例,展示了如何在方法参数上使用 @Autowired 和 @Qualifier 注解:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.KafkaProperties;
import org.springframework.stereotype.Service;@Service
public class KafkaService {private final KafkaTemplate<String, String> kafkaTemplate;private final KafkaProperties kafkaProperties;@Autowiredpublic KafkaService(KafkaTemplate<String, String> kafkaTemplate,@Qualifier("kafkaProperties") KafkaProperties kafkaProperties) {this.kafkaTemplate = kafkaTemplate;this.kafkaProperties = kafkaProperties;}// 其他方法
}
在这个示例中,KafkaService 的构造函数使用了 @Autowired 注解来自动注入 KafkaTemplate 和 KafkaProperties。其中,KafkaProperties 使用了 @Qualifier 注解来指定具体的bean。
注意:在使用 @Autowired 和 @Qualifier 注解时,确保 Spring 容器中存在相应的bean,并且bean的名称与 @Qualifier 注解中指定的名称匹配。
相关文章:
@ConfigurationProperties加在方法上
ConfigurationProperties注解通常用于将外部配置文件(如application.properties或application.yml)中的属性映射到Java类中。它通常加在类上,但也可以加在方法上。加在方法上时,通常与Bean注解一起使用,以便将配置属性…...
使用CUBEMX配置的USB大容量存储设备主机库获取LUN数量的不严谨代码纠正
最近在使用usb主机库驱动U盘直接进行扇区读写。 发现MSC库中获取LUN相关代码有问题 代码如下 其中 status USBH_MSC_BOT_REQ_GetMaxLUN(phost, (uint8_t *)(void *)&MSC_Handle->max_lun); MSC_Handle->max_lun (MSC_Handle->max_lun > MAX_SUPPORTED_L…...
合并重叠的区间
这一题不能用差分数组,因为 [1 , 4] [5, 6] 这个就会被合并,正确的做法就是先排序 bool cmp(vector<int> a, vector<int> b) {if (a[0] < b[0]) return 1;if (a[0] b[0]) return a[1] < b[1];return 0; } class Solution { public:ve…...
docker和运维
创建服务 docker service create --name order --network my-net -p 8080:8080 -d xxx 加入swarm集群 docker swarm join --token xxx 更新结点名字为mysql docker node update --label-add servermysql ecs-82ec-0003 创建MySQL服务 docker service create --name mysql --con…...
苍穹外面day13(day10)---订单状态定时处理、来单提醒和客户催单
Spring Task 同学们可以看我这篇文章 Spring Task初学-CSDN博客 订单状态定时处理 新建OrderTask /*** 定时任务类,定时处理订单状态*/ Component Slf4j public class OrderTask {Autowiredprivate OrderMapper orderMapper;/*** 处理超时订单的方法*/Scheduled(c…...
RCE和php文件上传
一、远程命令执行(RCE) RCE漏洞概述 RCE漏洞允许攻击者通过某种方式在目标服务器上执行任意命令。这种漏洞通常出现在服务器端语言中,如PHP。 RCE漏洞原理 PHP中的一些函数可以执行命令或代码,但如果对这些函数的输入未加限制&a…...
nextjs 实现TodoList网页应用案例
参考: https://nextjs.org/ Next.js 是用于网络的一种 React 框架。一些世界上最大的公司在使用它,它能够借助 React 组件的力量让您创建高质量的网络应用程序。 1、创建项目: 另外注意:pages与app路由存在冲突,如果有…...
U盘格式化了怎么恢复数据?教你U盘恢复妙招
U盘作为便携式存储设备,在我们的日常生活和工作中发挥着重要作用。然而,有时由于操作失误或其他原因,我们可能会格式化U盘,从而导致数据丢失。当遭遇这种情况时,很多人会感到焦虑和困惑。不过,幸运的是&…...
化工厂室内外4G/5G+蓝牙+GPS/北斗RTK人员定位系统解决方案
化工厂是高风险场所,含有大量有毒、易燃、易爆、易腐蚀等化学物品,并且环境复杂、设备繁多,一旦出现人为疏忽或者违规操作很容易引发重大安全事故,因此对化工厂员工、外来访客进行科学合理地管控,提升化工厂管理人员管…...
【知识跨境电商API接口丨python数分实战】国际电商平台用户成交转化分析
今天这篇文章将给大家介绍国际电商平台用户成交转化分析案例。 01 初步思路 问题已经明确 GMV的下降,可能出在用户下单成交环节。 这里需要明确GMV下降是今年与去年相比吗?明确GMV下降到底如何判断出来的?对比的对象是什么?如…...
【SpringBoot】Java对象级联校验
对于Javabean对象中的普通属性字段,我们可以直接使用注解进行数据校验,那如果是关联对象呢?其实也很简单,在属性上添加Valid就可以作为属性对象的内部属性进行验证。 public class User{ Size(min3,max5,message"list的Size在…...
【Redis 进阶】哨兵 Sentinel(重点理解流程和原理)
Redis 的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于上了一定规模的应用来说,这种方案是无法接受的,于是 Redis 从 2.8 开始…...
CSS实现元素hover时背景色拉伸渐变
HTML代码 <ul><li><p><a href"#">Facebook搜索</a></p></li><li><p><a href"#">Instagram搜索</a></p></li><li><p><a href"#">Google搜索&…...
Activity收不到bundle值
Activity有四种启动模式,一般为默认。 当Activity的启动模式为singleTask或singleInstance的时候,通过Intent传值,getIntent是接收不到值的,为null。 当Activity的启动模式为singletop的时候,若Activity位于栈顶&…...
ZBrush
所有建模软件最开始需要搞清楚的就是基础操作,如旋转视角,放大缩小,移动等,一般可以看上手教程 zbrush中雕刻很重要的概念是笔刷:ZBrush笔刷介绍-CSDN博客 基本操作 编辑模式:T 清除画布:ctr…...
【多线程-从零开始-贰】线程的构造方法和常见属性
Thread 的常见构造方法 在创建线程的时候,是可以给线程起名字的。默认为 Thread-0 、Thread-1… 不会影响线程执行效果,可以更好地进行管理 ThreadGroup -线程组 把多个线程放到一组里,方便统一的设置线程的一些属性不过现在很少用到&#…...
力扣:100379. 新增道路查询后的最短距离 I(Java,BFS)
目录 题目描述:示例 :代码实现: 题目描述: 给你一个整数 n 和一个二维整数数组 queries。 有 n 个城市,编号从 0 到 n - 1。初始时,每个城市 i 都有一条单向道路通往城市 i 1( 0 < i < …...
程序开发的常用设计思想
程序开发的设计思想多种多样,每种思想都旨在提高软件的可读性、可维护性、可扩展性和性能。以下是一些常见的程序开发设计思想: 1. 面向对象编程(Object-Oriented Programming, OOP) 核心思想: 将程序视为对象的集合…...
Qt之Gui
组件依赖关系 应用 #mermaid-svg-GADicZtZJRVVUeiF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GADicZtZJRVVUeiF .error-icon{fill:#552222;}#mermaid-svg-GADicZtZJRVVUeiF .error-text{fill:#552222;stroke:#…...
Linux操作系统之进程信号
进程信号 一、信号1、概念2、系统定义的信号列表3、常见的信号处理方式 二、产生信号的方式1、终端按键(1)组合键(2)示例代码(3)运行结果 2、调用系统函数(1)kill命令(2&…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
