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

@ConfigurationProperties加在方法上

@ConfigurationProperties注解通常用于将外部配置文件(如application.propertiesapplication.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.propertiesapplication.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. 运行应用

在你的应用程序中调用AppServiceprintAppProperties方法来打印配置属性。

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.propertiesapplication.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 注解来自动注入 KafkaTemplateKafkaProperties。其中,KafkaProperties 使用了 @Qualifier 注解来指定具体的bean。

注意:在使用 @Autowired@Qualifier 注解时,确保 Spring 容器中存在相应的bean,并且bean的名称与 @Qualifier 注解中指定的名称匹配。

相关文章:

@ConfigurationProperties加在方法上

ConfigurationProperties注解通常用于将外部配置文件&#xff08;如application.properties或application.yml&#xff09;中的属性映射到Java类中。它通常加在类上&#xff0c;但也可以加在方法上。加在方法上时&#xff0c;通常与Bean注解一起使用&#xff0c;以便将配置属性…...

使用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…...

合并重叠的区间

这一题不能用差分数组&#xff0c;因为 [1 , 4] [5, 6] 这个就会被合并&#xff0c;正确的做法就是先排序 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 /*** 定时任务类&#xff0c;定时处理订单状态*/ Component Slf4j public class OrderTask {Autowiredprivate OrderMapper orderMapper;/*** 处理超时订单的方法*/Scheduled(c…...

RCE和php文件上传

一、远程命令执行&#xff08;RCE&#xff09; RCE漏洞概述 RCE漏洞允许攻击者通过某种方式在目标服务器上执行任意命令。这种漏洞通常出现在服务器端语言中&#xff0c;如PHP。 RCE漏洞原理 PHP中的一些函数可以执行命令或代码&#xff0c;但如果对这些函数的输入未加限制&a…...

nextjs 实现TodoList网页应用案例

参考&#xff1a; https://nextjs.org/ Next.js 是用于网络的一种 React 框架。一些世界上最大的公司在使用它&#xff0c;它能够借助 React 组件的力量让您创建高质量的网络应用程序。 1、创建项目&#xff1a; 另外注意&#xff1a;pages与app路由存在冲突&#xff0c;如果有…...

U盘格式化了怎么恢复数据?教你U盘恢复妙招

U盘作为便携式存储设备&#xff0c;在我们的日常生活和工作中发挥着重要作用。然而&#xff0c;有时由于操作失误或其他原因&#xff0c;我们可能会格式化U盘&#xff0c;从而导致数据丢失。当遭遇这种情况时&#xff0c;很多人会感到焦虑和困惑。不过&#xff0c;幸运的是&…...

化工厂室内外4G/5G+蓝牙+GPS/北斗RTK人员定位系统解决方案

化工厂是高风险场所&#xff0c;含有大量有毒、易燃、易爆、易腐蚀等化学物品&#xff0c;并且环境复杂、设备繁多&#xff0c;一旦出现人为疏忽或者违规操作很容易引发重大安全事故&#xff0c;因此对化工厂员工、外来访客进行科学合理地管控&#xff0c;提升化工厂管理人员管…...

【知识跨境电商API接口丨python数分实战】国际电商平台用户成交转化分析

今天这篇文章将给大家介绍国际电商平台用户成交转化分析案例。 01 初步思路 问题已经明确 GMV的下降&#xff0c;可能出在用户下单成交环节。 这里需要明确GMV下降是今年与去年相比吗&#xff1f;明确GMV下降到底如何判断出来的&#xff1f;对比的对象是什么&#xff1f;如…...

【SpringBoot】Java对象级联校验

对于Javabean对象中的普通属性字段&#xff0c;我们可以直接使用注解进行数据校验&#xff0c;那如果是关联对象呢&#xff1f;其实也很简单&#xff0c;在属性上添加Valid就可以作为属性对象的内部属性进行验证。 public class User{ Size(min3,max5,message"list的Size在…...

【Redis 进阶】哨兵 Sentinel(重点理解流程和原理)

Redis 的主从复制模式下&#xff0c;一旦主节点由于故障不能提供服务&#xff0c;需要人工进行主从切换&#xff0c;同时大量的客户端需要被通知切换到新的主节点上&#xff0c;对于上了一定规模的应用来说&#xff0c;这种方案是无法接受的&#xff0c;于是 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有四种启动模式&#xff0c;一般为默认。 当Activity的启动模式为singleTask或singleInstance的时候&#xff0c;通过Intent传值&#xff0c;getIntent是接收不到值的&#xff0c;为null。 当Activity的启动模式为singletop的时候&#xff0c;若Activity位于栈顶&…...

ZBrush

所有建模软件最开始需要搞清楚的就是基础操作&#xff0c;如旋转视角&#xff0c;放大缩小&#xff0c;移动等&#xff0c;一般可以看上手教程 zbrush中雕刻很重要的概念是笔刷&#xff1a;ZBrush笔刷介绍-CSDN博客 基本操作 编辑模式&#xff1a;T 清除画布&#xff1a;ctr…...

【多线程-从零开始-贰】线程的构造方法和常见属性

Thread 的常见构造方法 在创建线程的时候&#xff0c;是可以给线程起名字的。默认为 Thread-0 、Thread-1… 不会影响线程执行效果&#xff0c;可以更好地进行管理 ThreadGroup -线程组 把多个线程放到一组里&#xff0c;方便统一的设置线程的一些属性不过现在很少用到&#…...

力扣:100379. 新增道路查询后的最短距离 I(Java,BFS)

目录 题目描述&#xff1a;示例 &#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个整数 n 和一个二维整数数组 queries。 有 n 个城市&#xff0c;编号从 0 到 n - 1。初始时&#xff0c;每个城市 i 都有一条单向道路通往城市 i 1&#xff08; 0 < i < …...

程序开发的常用设计思想

程序开发的设计思想多种多样&#xff0c;每种思想都旨在提高软件的可读性、可维护性、可扩展性和性能。以下是一些常见的程序开发设计思想&#xff1a; 1. 面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09; 核心思想&#xff1a; 将程序视为对象的集合…...

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、终端按键&#xff08;1&#xff09;组合键&#xff08;2&#xff09;示例代码&#xff08;3&#xff09;运行结果 2、调用系统函数&#xff08;1&#xff09;kill命令&#xff08;2&…...

Domain Randomization不只是“乱调参数”:一份给自动驾驶感知开发的避坑指南

Domain Randomization不只是“乱调参数”&#xff1a;一份给自动驾驶感知开发的避坑指南 在自动驾驶感知算法的开发过程中&#xff0c;仿真环境训练已经成为不可或缺的一环。许多团队在Carla或LGSVL等仿真平台上投入大量精力进行模型训练&#xff0c;却在真实路测时遭遇性能断崖…...

React自定义Hook开发:解锁逻辑复用的终极指南

React自定义Hook开发&#xff1a;解锁逻辑复用的终极指南 【免费下载链接】react-fundamentals Material for my React Fundamentals Workshop 项目地址: https://gitcode.com/gh_mirrors/re/react-fundamentals React自定义Hook是提升组件逻辑复用能力的核心技术&#…...

华硕笔记本终极优化指南:用GHelper彻底释放硬件潜能

华硕笔记本终极优化指南&#xff1a;用GHelper彻底释放硬件潜能 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar…...

终极指南:Windows游戏控制器虚拟驱动ViGEmBus完全掌握

终极指南&#xff1a;Windows游戏控制器虚拟驱动ViGEmBus完全掌握 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款强大的Windows内核模式驱动…...

如何判断便宜的SEO优化公司是否靠谱_如何在保证质量的前提下找到便宜的SEO优化

如何判断便宜的SEO优化公司是否靠谱_如何在保证质量的前提下找到便宜的SEO优化 在当今竞争激烈的商业环境中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为提高网站流量和品牌知名度的关键手段。随着越来越多的公司进入SEO市场&#xff0c;如何判断便宜的SEO优…...

M2FP在虚拟试衣间的应用:快速识别人体部位,助力电商设计

M2FP在虚拟试衣间的应用&#xff1a;快速识别人体部位&#xff0c;助力电商设计 1. 虚拟试衣间的技术挑战 在电商领域&#xff0c;虚拟试衣技术正在改变用户的购物体验。传统试衣间面临诸多痛点&#xff1a; 用户无法直观看到服装上身效果退换货率高&#xff0c;增加运营成本…...

京东 SPU/SKU 数据接口全解读:商品详情 API 文档(2026 最新版)

京东商品详情 API 体系以SPU&#xff08;标准产品单元&#xff09;聚合、SKU&#xff08;库存单元&#xff09;明细为核心设计&#xff0c;覆盖商家开放平台&#xff08;JOS&#xff09;、京东联盟两大核心场景&#xff0c;支持单品 / 批量查询、全字段 / 指定字段返回&#xf…...

Python 闭包与装饰器

在 Python 学习中&#xff0c;闭包和装饰器是两个既关联又容易混淆的知识点&#xff0c;尤其是结合嵌套函数使用时&#xff0c;常常分不清执行逻辑。但其实只要抓住核心原理&#xff0c;再结合简单案例拆解&#xff0c;就能轻松掌握。 一、前置回顾&#xff1a;函数与局部变量的…...

OpenClaw版本升级:Qwen3-4B兼容性测试与迁移方案

OpenClaw版本升级&#xff1a;Qwen3-4B兼容性测试与迁移方案 1. 升级前的准备工作 上周五晚上&#xff0c;当我准备给团队演示OpenClaw的自动化流程时&#xff0c;突然发现控制台弹出了版本更新提示。这个看似简单的升级通知&#xff0c;却让我经历了整整两天的兼容性调试。今…...

终极gsudo扩展功能开发指南:5个自定义插件与模块开发技巧

终极gsudo扩展功能开发指南&#xff1a;5个自定义插件与模块开发技巧 【免费下载链接】gsudo Sudo for Windows 项目地址: https://gitcode.com/gh_mirrors/gs/gsudo gsudo是Windows系统上的命令行权限提升工具&#xff0c;为开发者提供了类似Unix系统中sudo命令的功能。…...