springboot2 - 自定义yml参数配置
备选方案
如果在业务代码中无法使用下面这种方式,万般无奈下的最后的选择,就是从 Environment 对象直接获取参数。
Maven依赖
<!--使用 @ConfigurationProperties 的情况下可以阻止Idea报错,只是起到辅助作用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
yml配置
首先要确定需要配置哪些参数。
server:
port: 7081
servlet:
context-path: /sea
# ……………………………………………………………………………………
# 以下为自定义的参数配置
boot-quartz:
triggerAfterStart: true
defaultJobGroup: "DEFAULT"
defaultTriggerGroup: "DEFAULT"
minJobTimeMs: 30000
参数配置对象实体类
声明一个对象,字段名与 yml 属性名保持一致。
下面是一份实际使用的代码样例,
需要注意的是@ConfigurationProperties 注解,prefix 值对应于 yml 文件中的一级属性名。
这是一个 @Component 类,会被扫描到 spring 容器中,在需要用到参数的地方,使用 @Resource 注解引用即可。
package cn.seaboot.admin.quartz.core;
import org.quartz.utils.Key;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* quartz 二次封装参数列表
*
* @author Mr.css
* @version 2020-07-27 10:32
*/
@Component
@ConfigurationProperties(prefix = "boot-quartz")
public class QuartzProperties {
/**
* 默认任务分组名称
*/
private String defaultJobGroup = Key.DEFAULT_GROUP;
/**
* 默认触发器分组名称
*/
private String defaultTriggerGroup = Key.DEFAULT_GROUP;
/**
* 最小任务毫秒值,
* <p>
* 任务启动时间与当前时间非常接近的情况下,可能还没启动就已经过期了
* 如果小于此阈值,会直接触发,
* <p>
* 如果是短时间的计划任务,有很多的办法可以实现,没必要使用quartz。
*/
private int minJobTimeMs = 30000;
/**
* 项目启动之后,是否立即执行一次任务,
* 计划任务中注意加入当前时间的判断,避免出现任务执行周期与预期不符的情况
*/
private boolean triggerAfterStart;
public String getDefaultJobGroup() {
return defaultJobGroup;
}
public void setDefaultJobGroup(String defaultJobGroup) {
this.defaultJobGroup = defaultJobGroup;
}
public String getDefaultTriggerGroup() {
return defaultTriggerGroup;
}
public void setDefaultTriggerGroup(String defaultTriggerGroup) {
this.defaultTriggerGroup = defaultTriggerGroup;
}
public int getMinJobTimeMs() {
return minJobTimeMs;
}
public void setMinJobTimeMs(int minJobTimeMs) {
this.minJobTimeMs = minJobTimeMs;
}
public boolean isTriggerAfterStart() {
return triggerAfterStart;
}
public void setTriggerAfterStart(boolean triggerAfterStart) {
this.triggerAfterStart = triggerAfterStart;
}
@Override
public String toString() {
return "QuartzConstant{" +
"defaultJobGroup='" + defaultJobGroup + '\'' +
", defaultTriggerGroup='" + defaultTriggerGroup + '\'' +
", minJobTimeMs=" + minJobTimeMs +
", triggerAfterStart=" + triggerAfterStart +
'}';
}
}
疯狂的妞妞 :每一天,做什么都好,不要什么都不做!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY