spring 整合使用编程技巧方案

单体Spring boot引入外部配置文件yml,propert

2021-07-07  本文已影响0人  蓉漂里的小白

我们在做微服务项目时候会引入spring cloud框架,对于配置文件我们就会通过spring cloud config来配置,实现线上环境动态修改配置文件属性而不需要重新打jar 包。 但是对于单体的spring boot工程,我们又希望可以在生产环境中方案修改配置文件属性。

解决方案:

通过引入外部配置文件,应用启动时候设置配置文件的自动加载
1: 在单体工程的root目录下添加一个config目录,然后新建我们的properties, 如:jdbc-db.properties, redis.properties


image.png

2: 然后在我们的application启动类上添加@propertySources注解引入我们的外部文件

@PropertySources({
        @PropertySource("file:config/jdbc-db.properties"),
        @PropertySource(value = "file:config/redis.yml",factory = YamlPropertySourceFactory.class)
})

注意:因为PropertySources 默认只解析.properties文件,如果要解析yml文件,需要指定factory只需要实现org.springframework.core下的 PropertySourceFactory 接口就OK了。

public class YamlPropertySourceFactory implements PropertySourceFactory {

        @Override
        public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
            YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
            factory.setResources(resource.getResource());
            factory.afterPropertiesSet();
            Properties ymlProperties = factory.getObject();
            String propertyName = name != null ? name : resource.getResource().getFilename();
            return new PropertiesPropertySource(propertyName, ymlProperties);
        }
    }

简单的properties配置文件只需要按如下方式配置即可

@PropertySources({
        @PropertySource("file:jdbc-db.properties"),
        @PropertySource(value = "file:redis.properties")
})

只需要1,2步骤就可以完成外部文件的加载,如果涉及到线上修改配置就只需要手动修改配置文件,重新启动应用即可生效。

上一篇下一篇

猜你喜欢

热点阅读