关于springboot:springboot-项目框架搭建

如果我须要使得一个办法采取异步执行
如果我须要使得一个办法采取异步执行,并且执行的时候须要指定线程池,那么我须要做三步操作。
1、配置线程池

@Configuration
@EnableAsync
public class ExecutorConfig implements AsyncConfigurer {

    @Bean("asyncServiceExecutor")
    @Override
    public Executor getAsyncExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        //配置外围线程数
        executor.setCorePoolSize(10);
        //配置最大线程数
        executor.setMaxPoolSize(20);
        //配置队列大小
        executor.setQueueCapacity(99999);
        //配置线程池中的线程的名称前缀
        executor.setThreadNamePrefix("async-service-");
        // rejection-policy:当pool曾经达到max size的时候,如何解决新工作
        // CALLER_RUNS:不在新线程中执行工作,而是由调用者所在的线程来执行
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        //执行初始化
        executor.initialize();

        return executor;
    }
}

2、启用异步办法注解

@EnableAsync

3、在办法上开启注解,并配置线程池

@Async("asyncServiceExecutor")

springboot系统启动时初始化数据

@Component
@Slf4j
public class ApplicationRunnerImpl implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) {

    }
}

配置拦截器
1、增加拦截器配置文件

@Configuration
public class MyWebConfig implements WebMvcConfigurer {

    @Value("${api.contextPath}")
    private String apiContextPath;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

    }

    public String getLocalFileServerDir() {
        return System.getProperty("user.dir") + "/data/";
    }

    @Resource
    private SessionInterceptor sessionInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
           registry.addInterceptor(sessionInterceptor)
                .addPathPatterns(apiContextPath + "/**")
                .excludePathPatterns(apiContextPath + "/user/test")
                .excludePathPatterns(apiContextPath + "/***")
                .excludePathPatterns(apiContextPath + "/log/**");
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH")
                .maxAge(3600 * 24)
                .allowedHeaders("*")// 容许头部设置
                .allowCredentials(true);  // 是否发送cookie
    }
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理