SpringBoot项目加密配置文件关键信息

SpringBoot项目对配置文件的关键信息进行加密处理

1、application.properties中的druid信息账号密码加密

spring.datasource.druid.username=27769911216110106104103851161021209685
spring.datasource.druid.password=21715910311510310910410687122102101122

2、自定义ApplicationContextInitializer

作用:在项目启动后,进行配置文件的读取,并在实例化注入对象之前将环境配置信息进行解密并添加使用。

@Slf4j
public class ConfigApplicationContextInitializer implements ApplicationContextInitializer {
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {

        //读取配置文件的数据
        Properties prop = new Properties();
        try {
            prop.load(LancooApp.class.getClassLoader().getResourceAsStream("application.properties"));
        } catch (IOException e) {
            log.error("系统启动,初始化的读取配置文件失败:{}",e.getMessage());
        }

        
        
		//进行解密并存储解密后的数据到map中
        Map map = new HashMap();
        map.put("spring.datasource.druid.username", EncryptUtils.LgMgr_ParamDecrypt(prop.getProperty("spring.datasource.druid.username")));
        map.put("spring.datasource.druid.password", EncryptUtils.LgMgr_ParamDecrypt(prop.getProperty("spring.datasource.druid.password")));
        map.put("spring.datasource.druid.url", "jdbc:mysql://"+prop.getProperty("DataBaseServerAddr")+"/subjectresmgr?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=GMT%2B8");

		//将解密后的信息添加到环境配置信息最前面,实例使用的信息是位置越靠前,越优先采用
        MapPropertySource mapPropertySource = new MapPropertySource("druid-env-config", map);
        ConfigurableEnvironment environment = applicationContext.getEnvironment();
        environment.getPropertySources().addFirst(mapPropertySource);
    }
}

3、在resources/META-INF/文件夹下增加spring.factories文件

在这里插入图片描述

4、编辑spring.factories文件

作用:spring.factories中类的加载,优先于项目中实例的加载注入,可在druid实例化之前,把配置信息进行解密使用

org.springframework.context.ApplicationContextInitializer=\com.config.ConfigApplicationContextInitializer

5、验证:
在这里插入图片描述

可得:添加的配置优于application.properties传入的,更优先可得到应用,这样即可让一些涉及安全性的信息不直接暴露在外。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值