修改springboot的配置文件

1 创建一个类实现EnvironmentPostProcessor

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

以下是代码

实现类

java 复制代码
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文件

java 复制代码
org.springframework.boot.env.EnvironmentPostProcessor=\
  com.haier.configure.config.BootstrapDecryptEnvironmentPostProcessor,\
  com.haier.configure.config.SystemDecryptEnvironmentPostProcessor,\
  com.haier.configure.config.MyEnvPostProcessor

测试controller

java 复制代码
@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);
}
相关推荐
摇滚侠3 分钟前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 总结 热部署 常用配置 笔记44
java·spring boot·笔记
十年小站3 分钟前
一、新建一个SpringBoot3项目
java·spring boot
2401_841495646 分钟前
【数据结构】最长的最短路径的求解
java·数据结构·c++·python·算法·最短路径·图搜索
麦麦鸡腿堡8 分钟前
Java的代码块介绍与快速入门
java·开发语言
梅小西爱学习20 分钟前
线上CPU飙到100%?别慌,这3个工具比top快10倍!
java·后端·cpu
没有bug.的程序员25 分钟前
金融支付分布式架构实战:从理论到生产级实现
java·分布式·微服务·金融·架构·分布式调度系统
00后程序员张26 分钟前
Jenkins Pipeline post指令详解
java·开发语言
程序员阿达32 分钟前
开题报告之基于SpringBoot框架的路面故障信息上报系统设计与实现
java·spring boot·后端
哞哞不熬夜44 分钟前
JavaEE--SpringIoC
java·开发语言·spring boot·spring·java-ee·maven
滑水滑成滑头1 小时前
**点云处理:发散创新,探索前沿技术**随着科技的飞速发展,点云处理技术在计算机视觉、自动驾驶、虚拟现实等领域的应用愈发广
java·python·科技·计算机视觉·自动驾驶