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 +
'}';
}
}
疯狂的妞妞 :每一天,做什么都好,不要什么都不做!