跟大家分享一下
用ShardingSphere实现数据脱敏
根据官网上的数据脱敏功能,添加依赖,我用的是4.1.0版本:
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>4.1.0</version>
</dependency>
然后用Java配置:
其中有一句代码是这样的:
DataSource getEncryptDataSource() throws SQLException {
return EncryptDataSourceFactory.createDataSource(DataSourceUtil.createDataSource("demo_ds"), getEncryptRuleConfiguration(), new Properties());
}
DataSourceUtil.createDataSource(“demo_ds”) 这里会报红~~~
因为这个DataSourceUtil类是要自己写的~~~
这个类如果没有写,这里就配置不了!!!!!
坑!!!!!!!!!
找了好久,才在网上找到这个类的代码,感谢那位分享的大佬!!!1
我贴一下这个类,免得大家踩坑
创建数据源的工具类:
package com.irisian.sharedjdbc.masterandslave;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSource;
public class DataSourceUtil {
private static final String URL_PREFIX = "jdbc:mysql://localhost:3306/";
private static final String USER_NAME = "root";
private static final String PASSWORD = "123456";
public static DataSource createDataSource(final String dataSourceName) {
DruidDataSource result = new DruidDataSource();
result.setDriverClassName(com.mysql.jdbc.Driver.class.getName());
result.setUrl(URL_PREFIX + dataSourceName);
result.setUsername(USER_NAME);
result.setPassword(PASSWORD);
return result;
}
}
这样写了这个类,就可以用官网的代码进行Java配置了!
在开源的代码中看到这个类是这样写的:
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
public final class DataSourceUtil {
private static final String HOST = "localhost";
private static final int PORT = 3306;
private static final String USER_NAME = "root";
private static final String PASSWORD = "";
public static DataSource createDataSource(final String dataSourceName) {
HikariDataSource result = new HikariDataSource();
result.setDriverClassName("com.mysql.jdbc.Driver");
result.setJdbcUrl(String.format("jdbc:mysql://%s:%s/%s?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8", HOST, PORT, dataSourceName));
result.setUsername(USER_NAME);
result.setPassword(PASSWORD);
return result;
}
}