一、配置文件有值:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8080
metadata-map:
user.name: ${spring.security.user.name}
user.password: ${spring.security.user.password}
spring:
security:
user:
name: "root"
password: "asfasfwerw-23423sdgdf-df="
二、需要在服务启动后对
eureka.instance.metadata-map.user.password
进行解密:
新建AfterConfigListener类,实现SmartApplicationListener, Ordered的两个方法:
public class AfterConfigListener implements SmartApplicationListener, Ordered {
@Override
public boolean supportsEventType(Class<? extends ApplicationEvent> aClass) {
return(ApplicationEnvironmentPreparedEvent.class.isAssignableFrom(aClass) ||
ApplicationPreparedEvent.class.isAssignableFrom(aClass) );
}
@Override
public void onApplicationEvent(ApplicationEvent applicationEvent) {
/* ApplicationEnvironmentPreparedEvent 是加载配置文件,初始化日志系统的事件。 */
if (applicationEvent instanceof ApplicationEnvironmentPreparedEvent)
{
/* 进行密码的解密 */
System.setProperty("eureka.instance.metadata-map.user.password", 解密方法());
}
}
@Override
public int getOrder()
{
/* 设置该监听器 在加载配置文件之后执行 */
return(ConfigFileApplicationListener.DEFAULT_ORDER + 1);
}
}
三、主启动类加上监听器:
public class MainApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(MainApplication.class);
springApplication.addListeners(new AfterConfigListener());
springApplication.run(args);
// SpringApplication.run(MainApplication.class, args);
}