Я использую пружинный ботинок 2.1.5.RELEASE. Мой проект работает с redis. В целях безопасности я зашифрую свой пароль redis. Я установил значение в своем application.properties следующим образом:
spring.redis.password = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Я хочу расшифровать до инициализации Spring bean-компонента, поэтому я хочу изменить значение свойства RedisProperties passowrd . Поэтому я настраиваю BeanPostProcesser следующим образом:
@Component
public class PasswordBeanPostProcessor implements BeanPostProcessor {
@Autowired
private Cryptor cryptor;
@Value("${spring.redis.password}")
private String password;
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
log.info("beanName = {}",beanName);
if (bean instanceof RedisProperties) {
RedisProperties redisPropertiesBean = (RedisProperties) bean;
try {
redisPropertiesBean.setPassword(cryptor.decrypt(password));
log.debug(redisPropertiesBean.getPassword());
return redisPropertiesBean;
} catch (Exception ex) {
log.error("redis password decrypt error", ex);
throw new RuntimeException(ex);
}
}
return bean;
}
}
Но это не сработало , когда я запускаю свое приложение, нет журнала, подобного этой печати:
beanName = redisProperties
Чтобы убедиться, что в моем * есть bean-компонент с именем redisProperties
1019 *, я вставляю bean RedisProperties
в другой Bean. Он работает хорошо, я могу получить свойства в RedisProperties
.
Чтобы мое приложение успешно работало с зашифрованным паролем, я расшифровываю пароль redis в другом @PostConstruct
метод.Но я думаю, что этот способ не изящен, что является правильным?
кто может мне помочь , пожалуйста