package tech.powerjob.samples.config;
|
|
import com.zaxxer.hikari.HikariConfig;
|
import com.zaxxer.hikari.HikariDataSource;
|
import org.h2.Driver;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.DependsOn;
|
import tech.powerjob.common.utils.CommonUtils;
|
import tech.powerjob.official.processors.impl.sql.SpringDatasourceSqlProcessor;
|
import tech.powerjob.worker.PowerJobSpringWorker;
|
|
import javax.sql.DataSource;
|
|
/**
|
* @author Echo009
|
* @since 2021/3/10
|
*/
|
@Configuration
|
@ConditionalOnBean(PowerJobSpringWorker.class)
|
public class SqlProcessorConfiguration {
|
|
|
@Bean
|
@DependsOn({"initPowerJob"})
|
public DataSource sqlProcessorDataSource() {
|
String path = System.getProperty("user.home") + "/test/h2/" + CommonUtils.genUUID() + "/";
|
String jdbcUrl = String.format("jdbc:h2:file:%spowerjob_sql_processor_db;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false", path);
|
HikariConfig config = new HikariConfig();
|
config.setDriverClassName(Driver.class.getName());
|
config.setJdbcUrl(jdbcUrl);
|
config.setAutoCommit(true);
|
// 池中最小空闲连接数量
|
config.setMinimumIdle(1);
|
// 池中最大连接数量
|
config.setMaximumPoolSize(10);
|
return new HikariDataSource(config);
|
}
|
|
|
@Bean
|
public SpringDatasourceSqlProcessor simpleSpringSqlProcessor(@Qualifier("sqlProcessorDataSource") DataSource dataSource) {
|
SpringDatasourceSqlProcessor springDatasourceSqlProcessor = new SpringDatasourceSqlProcessor(dataSource);
|
// do nothing
|
springDatasourceSqlProcessor.registerSqlValidator("fakeSqlValidator", sql -> true);
|
// 排除掉包含 drop 的 SQL
|
springDatasourceSqlProcessor.registerSqlValidator("interceptDropValidator", sql -> sql.matches("^(?i)((?!drop).)*$"));
|
// do nothing
|
springDatasourceSqlProcessor.setSqlParser((sql, taskContext) -> sql);
|
return springDatasourceSqlProcessor;
|
}
|
|
}
|