相关文章推荐
文质彬彬的草稿纸  ·  python dataframe ...·  5 月前    · 
飘逸的火锅  ·  C#调用C++——CLR方式 - ...·  5 月前    · 
憨厚的鼠标  ·  eslint async arrow ...·  1 年前    · 
憨厚的咖啡豆  ·  json html 转义 java ...·  1 年前    · 

在spring启动加载完配置后,我们自定义一个Environment后置处理器,来修改配置。

背景知识:

1、spring中配置可以从Environment中获取。
2、ApplicaitonContext接口包含getEnvironment功能。
3、EnvironmentPostProcessor接口是Environment的后置处理器
4、springboot的spring.factorys文件可以自定义EnvironmentPostProcessor实现。

1、在项目resources下创建META-INF/spring.factories文件,内容如下:

	org.springframework.boot.env.EnvironmentPostProcessor=\
	com.example.demo.DemoEnvironment

2、创建自定义类DemoEnvironment,注:String name 视情况而定

public class DemoEnvironment implements EnvironmentPostProcessor {
    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        String name = "applicationConfig: [classpath:/application-dev.properties]";
        MapPropertySource propertySource = (MapPropertySource) environment.getPropertySources().get(name);
        Map<String, Object> source = propertySource.getSource();
        Map map = new HashMap();
        source.forEach((k, v) -> {
            map.put(k , v);
        });
        // 将配置的端口号修改为 8022
        map.replace("server.port", 8022);
        environment.getPropertySources().replace(name, new MapPropertySource(name, map));
                    目标:在spring启动加载完配置后,我们自定义一个Environment后置处理器,来修改配置。背景知识:1、spring中配置可以从Environment中获取。2、ApplicaitonContext接口包含getEnvironment功能。3、EnvironmentPostProcessor接口是Environment的后置处理器4、springboot的spring.factorys文件可以自定义EnvironmentPostProcessor实现。方法:1、在项目resourc
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MapPropertySource.
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.URLDecoder;
import java.util.Properties;
				
#记 springboot修改配置文件(properties或yml) 最近项目开发快完成了(ssm—&gt;springboot架构),在项目构建过程有很多数据都是配置properties或yml文件,昨天经理给我提了个需求:写个api去修改配置文件的数据值,然后还要用日志记录. 当然作为一个java程序员(面向百度程序员…呸! 面向对象…)本着学习的精神去搜索了一波大神们的操作,结果发...
SpringCloud 为例,希望服务在启动后根据某些信息生成一个动态的 实例ID 也就是application.yaml配置的如Eureka的配置 eureka: instance: instance-id: ID 我们如果希望在服务启动时候随机生成一个instance-id,首先找到 可以使用BeanPostProcessor在Bean实例化之后对他进行修改eureka.in...
配置文件写入到数据库,通过修改之后,不用重启项目,能实时生效 如果想要实现只要数据库数据被修改就实时生效,(从任何地方修改数据库数据),可以使用阿里的间件 canal @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface DynamicConf { String value(); String defaultValue() default <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> <version>2.2.6.RELEASE</version> </dependency> application.yml
我可以回答这个问题。application.propertiesSpring Boot应用程序配置文件,可以用来配置数据库连接信息,例如数据库的URL、用户名、密码等。在该文件,可以使用以下格式来配置数据库连接信息: spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=123456 其spring.datasource.url表示数据库的URL,spring.datasource.username表示数据库的用户名,spring.datasource.password表示数据库的密码。这些信息可以根据实际情况进行修改