SpringBoot配置文件

文章目录

基本语法

  • key: value形式,kv之间有空格
  • 大小写敏感
  • 使用缩进表示层级关系,缩进不允许使用tab,只允许空格。缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释
  • 字符串无需加引号,如果要加,也可

数据类型

  • 基本:date、boolean、string、number、null
  • 对象:map、hash、set、object,键值对的集合

写法举例

行内写法

对象:

复制代码
 k: {k1:v1,k2:v2,k3:v3}

数组:

复制代码
 k: [v1,v2,v3]

级联写法

对象:

复制代码
spring:
  cloud:
    nacos:
      discovery:
        username: nacos
        password: nacos
        server-addr: 192.168.1.61:8848
        namespace: cml
      config:
        server-addr: 192.168.1.61:8848
        file-extension: yaml
        namespace: public

数组:

复制代码
cml:
  - 1
  - 2
  - 3

配置提示

复制代码
    <!-- configuration-processor  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
        
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

用法举例

逗号分隔

配置:

复制代码
test: 
    list: aaa,bbb,ccc

读取配置:

复制代码
@Value("#{'${test.list:}'.split(',')}")  

默认值

单个值

配置:

复制代码
cml:
  age: 20

读取配置:

复制代码
@Value("${cml.age:18}")
private String age;


//如果没有 ngh.cameraIndexCodes 这个配置,或者这个配置为空,都将赋值默认值 '空字符串' 

@Value("${ngh.cameraIndexCodes:}")
private String manoeuvreTip;

集合值

配置:

yaml 复制代码
autoLog:   
  ignoreMethods: 

读取配置:

java 复制代码
@Value("${autoLog.ignoreMethods:\"login\", \"changePassword\", \"modifyPassword\", 
\"uploadFile\", \"downloadLatestFileByType\", \"syncPurchaseRequirement\"}")
private List<String> ignoreMethods;

映射到类

配置:

复制代码
cml:
  admin:
    defaultUserName: admin
    defaultPassword: 111111
    defaultUserName1: admin1
    defaultPassword1: 222222

读取配置:

  • ConfigurationProperties注解将加载配置项内容到类属性上面

  • Component:将类注册到 Spring 容器,这样其他类可以直接 Autowired 使用

  • RefreshScope :配置更改,自动刷新,不用重启启动服务

    @RefreshScope
    @Component
    @ConfigurationProperties(prefix = "cml.admin")
    @Data
    @ToString
    public class Account implements Serializable {
    private String defaultUserName;
    private String defaultPassword;
    private String defaultUserName1;
    private String defaultPassword1;
    }

注意事项

  • @Value 不可和@AllArgsConstructor 同时使用

引用

https://www.cnblogs.com/coderacademy/p/18181462

相关推荐
IT研究室2 分钟前
最新计算机毕业设计选题推荐-基于spring boot的母婴全程服务管理系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
CRMEB10 分钟前
商品 SKU 设计,从简单规格到多规格踩过什么
java·前端·数据库·开源
霸道流氓气质11 分钟前
基于 Spring @Profile 的 MQ 消费者按需开关设计
java·后端·spring
silvamux_28 分钟前
4款新模型商务邮件翻译横评:0.98到0.46
android·java·javascript
霸道流氓气质44 分钟前
Redisson BloomFilter:分布式位图实现、误判率调优与缓存穿透三级防护的 Spring Boot 生产级实战
spring boot·分布式·缓存
Dovis(誓平步青云)1 小时前
车辆进入隧道后信号断开,座舱旅程怎样补回事件
java·开发语言·前端·数据库·电脑
砚底藏山河1 小时前
数据新鲜度 SLA 监控
java·大数据·python·maven
逆风优雅1 小时前
nestjs middleware 接口请求日志
后端·js
是枚小菜鸡儿吖1 小时前
听歌截图太普通?我把MusicCard部署到极空间,把歌曲做成随时可开的音乐海报页
服务器·人工智能·后端·ai·大模型