package com.vincent.rsf.httpaudit.config;
|
|
import com.vincent.rsf.httpaudit.props.HttpAuditProperties;
|
import com.vincent.rsf.httpaudit.service.HttpAuditAsyncRecorder;
|
import com.vincent.rsf.httpaudit.web.HttpAuditFilter;
|
import org.mybatis.spring.annotation.MapperScan;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.core.Ordered;
|
import org.springframework.core.env.Environment;
|
import org.springframework.scheduling.annotation.EnableAsync;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
import java.util.concurrent.Executor;
|
|
/**
|
* 引入 rsf-http-audit 即生效(可 http-audit.enabled=false 关闭)
|
*/
|
@Configuration
|
@EnableAsync
|
@EnableConfigurationProperties(HttpAuditProperties.class)
|
@ConditionalOnProperty(prefix = "http-audit", name = "enabled", havingValue = "true", matchIfMissing = true)
|
@MapperScan("com.vincent.rsf.httpaudit.mapper")
|
public class HttpAuditAutoConfiguration {
|
|
@Bean(name = "httpAuditExecutor")
|
public Executor httpAuditExecutor() {
|
ThreadPoolTaskExecutor ex = new ThreadPoolTaskExecutor();
|
ex.setCorePoolSize(2);
|
ex.setMaxPoolSize(8);
|
ex.setQueueCapacity(1000);
|
ex.setThreadNamePrefix("http-audit-");
|
ex.initialize();
|
return ex;
|
}
|
|
@Bean
|
public FilterRegistrationBean<HttpAuditFilter> httpAuditFilterRegistration(
|
HttpAuditAsyncRecorder recorder, HttpAuditProperties props, Environment env) {
|
HttpAuditFilter filter = new HttpAuditFilter(recorder, props, env);
|
FilterRegistrationBean<HttpAuditFilter> reg = new FilterRegistrationBean<>();
|
reg.setFilter(filter);
|
reg.addUrlPatterns("/*");
|
reg.setOrder(Ordered.HIGHEST_PRECEDENCE + 50);
|
return reg;
|
}
|
}
|