网上好多都是copy的,而且有些类已经过时,我自己完善了些,有问题,请留言
一共需要两步
1 写一个配置类
package com.xxl.job.admin.afterconfig;
import com.xxl.job.admin.util.EncryptAesUtil;
import org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor;
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
import org.springframework.boot.context.event.ApplicationPreparedEvent;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.event.SmartApplicationListener;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
/**
* 解密配置文件的信息
*
* @author liHu
* @version 1.0
* @date 2021/8/3 17:05
* @since JDK 1.8
*/
public class AfterConfigListener implements SmartApplicationListener, Ordered {
/**
* 复制的ConfigFileApplicationListener文件内容
* @param eventType
* @return
*/
@Override
public boolean supportsEventType(Class<? extends ApplicationEvent> eventType) {
return ApplicationEnvironmentPreparedEvent.class.isAssignableFrom(eventType) || ApplicationPreparedEvent.class.isAssignableFrom(eventType);
}
@Override
public void onApplicationEvent(ApplicationEvent event) {
// ApplicationEnvironmentPreparedEvent 是加载配置文件,初始化日志系统的事件。
if (event instanceof ApplicationEnvironmentPreparedEvent) {
// 获得原来的password内容
ConfigurableEnvironment environment = ((ApplicationEnvironmentPreparedEvent) event).getEnvironment();
String url = environment.getProperty("spring.datasource.url");
String username = environment.getProperty("spring.datasource.username");
String password = environment.getProperty("spring.datasource.password");
// 进行密码的解密
System.setProperty("spring.datasource.url", EncryptAesUtil.aesDecrypt(url));
System.setProperty("spring.datasource.username", EncryptAesUtil.aesDecrypt(username));
System.setProperty("spring.datasource.password", EncryptAesUtil.aesDecrypt(password));
}
if (event instanceof ApplicationPreparedEvent) {
}
}
@Override
public int getOrder() {
// 设置该监听器 在加载配置文件之后执行
return ConfigDataEnvironmentPostProcessor.ORDER + 1;
}
}
2 启动项读取这个配置类
package com.xxl.job.admin;
import com.xxl.job.admin.afterconfig.AfterConfigListener;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author xuxueli 2018-10-28 00:38:13
*/
@SpringBootApplication
public class XxlJobAdminApplication {
public static void main(String[] args) {
// SpringApplication.run(XxlJobAdminApplication.class, args); // 这个是之前的启动代码
// 加上下面三行,
SpringApplication springApplication = new SpringApplication(XxlJobAdminApplication.class);
// 加载自定义的、重写后的、获取配置文件信息的类
springApplication.addListeners(new AfterConfigListener());
springApplication.run(args);
}
}
EncryptAesUtil类请看这篇文章
加解密工具
https://blog.csdn.net/lh155136/article/details/119348435