sprinboot + mybatis 如何实现druid加密配置
时间: 2023-09-03 13:02:07 浏览: 127
在Spring Boot中,我们可以通过使用Druid和MyBatis来实现加密配置。下面是具体的实现步骤:
1. 首先,我们需要在项目的pom.xml文件中添加Druid和MyBatis依赖。示例如下:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
```
2. 在application.properties文件中配置Druid的加密相关属性。示例如下:
```properties
# 数据源配置
# 使用Druid数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# Druid连接池的相关配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=enc:密文密码
# 配置Druid加密的配置项
# 使用ConfigFilter进行配置加密
spring.druid.configFilter.enabled=true
# 加密的秘钥,自定义
spring.druid.configFilter.key=myKey
```
其中,“spring.datasource.password”配置项的密码值使用了“enc:密文密码”的形式,表示密码已经进行了加密。需要注意的是,“密文密码”需要替换为真实的加密后的密码。
3. 创建一个自定义的PasswordCallbackFilter类,并继承com.alibaba.druid.filter.config.ConfigFilter类。在该类中,重写getConfigFrom(session)方法,并在方法中使用密码解密工具来解密加密的密码。示例如下:
```java
import com.alibaba.druid.filter.config.ConfigFilter;
import java.util.Properties;
public class PasswordCallbackFilter extends ConfigFilter {
@Override
protected Properties getConfigFrom(PhysicalConnectionInfo session) {
Properties properties = super.getConfigFrom(session);
// 解密密码
String encryptedPassword = properties.getProperty("password");
String decryptedPassword = PasswordUtil.decrypt(encryptedPassword);
properties.setProperty("password", decryptedPassword);
return properties;
}
}
```
在上述代码中,我们通过配置文件中的spring.druid.configFilter.key属性来设置密码解密的秘钥。
4. 在启动类(即带有@SpringBootApplication注解的类)中,将自定义的PasswordCallbackFilter类加入到Druid的过滤器链中。示例如下:
```java
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class Application {
@Value("${spring.druid.configFilter.key}")
private String druidConfigFilterKey;
@Bean
public PasswordCallbackFilter passwordCallbackFilter() {
PasswordCallbackFilter passwordCallbackFilter = new PasswordCallbackFilter();
passwordCallbackFilter.setConfigFilterKey(druidConfigFilterKey);
return passwordCallbackFilter;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
在上述代码中,我们通过使用@Value注解来读取配置文件中的spring.druid.configFilter.key属性值,并将其设置到自定义的PasswordCallbackFilter对象中。
综上所述,我们通过这种方式,可以实现在Spring Boot项目中使用Druid和MyBatis进行密码加密配置的功能。
阅读全文