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

修改springboot的配置文件

1 创建一个类实现EnvironmentPostProcessor

2 resources/META-INFO/spring.factories文件,配置实现类的全路径

以下是代码

实现类

package com.haier.configure.config;

import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.boot.env.OriginTrackedMapPropertySource;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.env.PropertySource;

import java.util.HashMap;
import java.util.Map;

/**
 * @author A200
 * @date 2024/12/18 16:58
 */
public class MyEnvPostProcessor implements EnvironmentPostProcessor {

    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        System.out.println("开始打印....");
        Map<String, Object> bootstrapSource = new HashMap<>();
        Map<String, Object> applicationSource = new HashMap<>();
        MutablePropertySources propertySources = environment.getPropertySources();
        for (PropertySource<?> propertySource : propertySources) {
            String propertySourceName = propertySource.getName();
            System.out.println("名称:"+propertySourceName);
            if (StringUtils.containsIgnoreCase(propertySourceName, "bootstrap.yml")) {
                System.out.println("bootstrap配置文件打印:");
                Map<String,Object> map = (Map<String,Object>)propertySource.getSource();
                bootstrapSource.putAll(map);
                bootstrapSource.put("wei.age","18");

                propertySources.remove(propertySourceName);
                propertySources.addLast(new OriginTrackedMapPropertySource(propertySourceName, bootstrapSource));
                continue;
            }

            if (StringUtils.containsIgnoreCase(propertySourceName, "application.yml")) {
                System.out.println("application配置文件打印:");
                Map<String,Object> map = (Map<String,Object>)propertySource.getSource();
                applicationSource.putAll(map);
                applicationSource.put("wei.name","longlonglong");
                applicationSource.put("wei.flag","true");

                propertySources.remove(propertySourceName);
                propertySources.addLast(new OriginTrackedMapPropertySource(propertySourceName, applicationSource));

            }
        }
    }
}

spring.factories文件

org.springframework.boot.env.EnvironmentPostProcessor=\
  com.haier.configure.config.BootstrapDecryptEnvironmentPostProcessor,\
  com.haier.configure.config.SystemDecryptEnvironmentPostProcessor,\
  com.haier.configure.config.MyEnvPostProcessor

测试controller

@Value("${wei.age}")
private Integer weiage;
@Value("${wei.name}")
private String weiname;
@Value("${wei.flag}")
private Boolean weiflag;

@PostConstruct
public void init(){
    System.out.println("打印配置哦:"+weiage);
    System.out.println("打印配置哦:"+weiname);
    System.out.println("打印配置哦:"+weiflag);
}


http://www.kler.cn/a/442908.html

相关文章:

  • 游戏引擎学习第78天
  • CTFshow—文件包含
  • 《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶
  • JavaEE之线程池
  • 硬件设计-齐纳管
  • ElasticSearch06-分片节点分配
  • 34.在 Vue 3 中使用 OpenLayers 上传 GeoJSON 文件并显示地图数据
  • 【DevOps基础篇】SCM(Source Code Management)
  • 网络安全管理员三级考试整理
  • 大数据治理相关工具:提升数据质量与合规性
  • 密码编码学与网络安全(第五版)答案
  • Redis篇--实际应用篇1--缓存穿透(布隆过滤器)
  • MySQL中in和exists的使用场景
  • Python 中使用 pymysql 操作 MySQL 数据库的基础指南
  • 2_使用 HTML5 Canvas API (1) --[HTML5 API 学习之旅]
  • Java毕设项目:基于Springboot生鲜销售商城网站系统设计与实现开题报告
  • Spring Boot 3.X:Unable to connect to Redis错误记录
  • [LeetCode-Python版]142. 环形链表 II
  • Springboot3.x 进阶-配置和序列化
  • Android绘图Path基于LinearGradient线性渐变,Kotlin(1)
  • 免费开源了一个图床工具 github-spring-boot-starter
  • 汽车发动机电控系统-【传感器】篇
  • 实践环境-docker安装mysql8.0.40步骤
  • elasticsearch 使用enrich processor填充数据
  • 代码随想录算法训练营第五十天 | 图 | 并查集