修改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);
}
相关推荐
许彰午6 小时前
14_Java泛型完全指南
java·windows·python
智慧物业老杨6 小时前
司法绿色通道下的物业纠纷数智化解决方案——基于“三优先“机制的全流程技术落地实践
java·django
2601_961194026 小时前
2026初级会计实务公式总结大全|计算题公式手册PDF
java·spring·eclipse·pdf·tomcat·hibernate
做个文艺程序员6 小时前
第1篇:K8s 核心概念精讲:Pod、Deployment、Service 与 Namespace——Java 开发者快速上手指南
java·云原生·容器·kubernetes·容器编排
小欣加油9 小时前
leetcode3751 范围内总波动值I
java·数据结构·c++·算法·leetcode
闪电悠米9 小时前
黑马点评-Redisson-01_why_redisson
java·服务器·网络·数据库·缓存·wpf
星轨zb9 小时前
LangChain4j 集成 Spring Boot:会话记忆 NPE 的根源与 ChatMemoryProvider 正确配置
java·spring boot·后端·langchain4j
JAVA9659 小时前
JAVA面试-并发篇 05-并发包AQS队列实现原理是什么
java·开发语言·面试
JAVA面经实录9179 小时前
RocketMQ全套学习知识手册
java·kafka·rabbitmq·rocketmq
混凝土拌意大利面9 小时前
TG-BOOT springboot 功能集散开发框架(AI 协作友好)
人工智能·spring boot·后端