应用场景:nacos配置数据库连接、redis连接或第三方组件连接需要加密处理
环境:
JDK17、springboot3.0、spring-cloud-alibaba(22.0.0.0)
starter项目结构
其中 :
OvseNacosPropertySourceBuilder继承NacosPropertySourceBuilder ,从配置服务器加载配置源 OvseNacosPropertySourceLocator 继承 NacosPropertySourceLocator ,读取自定义配置文件 NoDeductMoneyNacosEncryption 封装加解密方式 AesUtils 为加解密工具类 NacosConfigBootstrapConfiguration 需要自动装载的配置类- spring.factories 配置NacosConfigBootstrapConfiguration自动装配
- 包名必须与nacos包名一致:com.alibaba.cloud.nacos
需要引入的依赖
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<exclusions>
<exclusion>
<artifactId>fastjson</artifactId>
<groupId>com.alibaba</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
NacosConfigBootstrapConfiguration代码:
@Configuration(proxyBeanMethods = false)
public class NacosConfigBootstrapConfiguration {
@Bean
public NoDeductMoneyNacosEncryption noDeductMoneyNacosEncryption(Environment environment) {
return new NoDeductMoneyNacosEncryption(environment);
}
@Bean
@ConditionalOnMissingBean
public NacosConfigProperties nacosConfigProperties() {
return new NacosConfigProperties();
}
@Bean
@ConditionalOnMissingBean
public NacosConfigManager nacosConfigManager(NacosConfigProperties nacosConfigProperties) {
return new NacosConfigManager(nacosConfigProperties);
}
@Bean
public OvseNacosPropertySourceLocator nacosPropertySourceLocator(NacosConfigManager nacosConfigManager, NoDeductMoneyNacosEncryption noDeductMoneyNacosEncryption) {
return new OvseNacosPropertySourceLocator(nacosConfigManager, noDeductMoneyNacosEncryption);
}
}
NoDeductMoneyNacosEncryption代码:
@Component
public class NoDeductMoneyNacosEncryption {
private static boolean secret