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

Java SpringBoot的自定义配置

一,一个类多个属性的情况

  1. application.properties配置文件写法
my.config.ip=127.0.0.1
my.config.port=8080
  1. 自定义配置类:MyTestConfig

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;@Configuration
@ConfigurationProperties(prefix = "my.config", ignoreUnknownFields = false)
public class MyTestConfig {public static final Logger log = LoggerFactory.getLogger(MyTestConfig.class);private String ip;private int port;public String getIp() {return ip;}public int getPort() {return port;}public void setIp(String ip) {this.ip = ip;log.info("【配置管理】配置ip:" + ip);}public void setPort(int port) {this.port = port;log.info("【配置管理】配置端口:" + port);}
}

二,一个类多个属性,驼峰字段名

  1. application.properties配置文件写法
#线程池参数:核心线程数
my.config.threadpool.core-pool-size=5
#线程池参数:最大线程数数
my.config.threadpool.max-poll-size=5
#线程池参数:阻塞的队列大小,-1代表没有限制,也就是int的最大值
my.config.threadpool.queue-size=-1
#核心线程之外的空闲线程   的存活时间(单位,秒)
my.config.threadpool.keep-alive-time=0
  1. 自定义配置类:MyThreadPoolConfig
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;import java.util.List;@Configuration
@ConfigurationProperties(prefix = "my.config.threadpool",ignoreUnknownFields = false
)
public class MyThreadPoolConfig {public static final Logger log = LoggerFactory.getLogger(MyThreadPoolConfig.class);private int corePoolSize = 10;// 线程池的核心线程数量private int maxPollSize = 10;//最大的线程数量private int queueSize = -1;//阻塞的队列大小private long keepAliveTime = 0L;//线程空闲时间public void setCorePoolSize(int corePoolSize) {this.corePoolSize = corePoolSize;log.info("【配置管理】线程池的核心线程数量:" + corePoolSize + "个线程");}public void setMaxPollSize(int maxPollSize) {this.maxPollSize = maxPollSize;log.info("【配置管理】最大的线程数量:" + maxPollSize + "个线程");}public void setQueueSize(int queueSize) {this.queueSize = queueSize;log.info("【配置管理】阻塞的队列大小:" + (queueSize > 0 ? corePoolSize + "个" : "不限制"));}public void setKeepAliveTime(long keepAliveTime) {this.keepAliveTime = keepAliveTime;log.info("【配置管理】线程空闲时间(单位,秒):" + (keepAliveTime > 0 ? keepAliveTime + "秒" : "不限制"));}}

三,需要配置成List集合的情况

  1. application.properties配置文件写法
my.config.test.item[0]=test_1
  1. 自定义配置类:MyTestConfig
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;import java.util.List;@Configuration
@ConfigurationProperties(prefix = "my.config.test",ignoreUnknownFields = false
)
public class MyTestConfig {public static final Logger log = LoggerFactory.getLogger(MyTestConfig.class);private List<String> item;public void setItem(List<String> item) {this.item = item;for (String str : item) {log.info("【配置管理】新增一个子项:" + str);}}}

四,需要配置成List<自定义类>集合的情况

  1. application.properties配置文件写法
my.config.test.item[0].name=zhangsan
my.config.test.item[0].age=25my.config.test.item[1].name=lisi
my.config.test.item[1].age=26
  1. 实体类:MyPeople
   public class MyPeople {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age= age;}}
  1. 自定义配置类:MyTestConfig
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;import java.util.List;@Configuration
@ConfigurationProperties(prefix = "my.config.test",ignoreUnknownFields = false
)
public class MyTestConfig {public static final Logger log = LoggerFactory.getLogger(MyTestConfig.class);private List<MyPeople> item;public List<MyPeople> getItem() {return item;}public void setItem(List<MyPeople> item) {this.item = item;for (MyPeople people : item) {log.info("people : " + people.getName() + " " + people.getAge());}}}

相关文章:

  • 使用 XWPFDocument 生成表格时固定列宽度
  • JS实现RSA加密
  • 高共模干扰场景下电压检测技术革新——光电隔离方案解析
  • docker占用磁盘100%
  • 富勒 (Fuller) 投影
  • DNS优选 2.6.3 | 解锁专业版,优选最快NDS,访问受限网站
  • 在高数据速度下确保信号完整性的 10 个关键策略
  • Face Swap 1.3.8| 解锁专业版,无限制换脸,视频换脸,释放您的创造力
  • Spring 中的验证、数据绑定和类型转换
  • 信号的传输方式
  • Mybatis--XML映射文件配置和动态SQL
  • linux 学习 1.开始学习
  • Freertos----信号量
  • 【技术派后端篇】Redis分布式锁:原理、实践与应用
  • DS-SLAM 运动一致性检测的源码解读
  • 企业合规风险高、运营不稳定,要怎么解决?
  • AI应用开发之扣子第二课-AI翻译(第1节/共2节)
  • ESP32-idf学习(二)esp32C3作服务端与电脑蓝牙数据交互
  • 【Vue生命周期的演变:从Vue 2到Vue 3的深度剖析】
  • 山东大学软件学院创新项目实训开发日志(17)之中医知识历史问答历史对话查看功能完善
  • 挑大梁!一季度北上广等7省份进出口占外贸总值四分之三
  • 巴菲特股东大会前瞻:执掌伯克希尔60年,巨轮将驶向何方
  • 龙翔被撤销南京市人大常委会主任职务,此前已被查
  • 解放日报:人形机器人新赛道正积蓄澎湃动能
  • 网商银行2024年年报发布,客户资产管理规模超过1万亿
  • 比黄油年糕热量还高,这个火爆全网的甜品劝你慎吃