DataSourceDecryptConfig.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package com.cn.tianji.config;
  2. import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
  3. import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
  4. import com.cn.tianji.common.Sm4Util;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
  7. import org.springframework.context.annotation.Configuration;
  8. import javax.annotation.PostConstruct;
  9. import javax.annotation.Resource;
  10. @Configuration
  11. @ConditionalOnClass(DynamicDataSourceProperties.class)
  12. @Slf4j
  13. public class DataSourceDecryptConfig {
  14. @Resource
  15. private DynamicDataSourceProperties properties;
  16. @PostConstruct
  17. public void decryptDataSourcePasswords() {
  18. log.warn("开始解密数据源密码...");
  19. // 解密主数据源密码
  20. decryptPassword(properties.getDatasource().get(properties.getPrimary()));
  21. // 解密所有从数据源密码
  22. properties.getDatasource().values().forEach(this::decryptPassword);
  23. log.warn("解密数据源密码完成...");
  24. }
  25. private void decryptPassword(DataSourceProperty property) {
  26. String password = property.getPassword();
  27. if (password != null && password.startsWith(Sm4Util.ENC_PREFIX)) {
  28. property.setPassword(Sm4Util.decrypt(password));
  29. }
  30. }
  31. }