1、前言
总结一下今天在谷粒商城学习到自定义Spring配置文件的提示内容
2、正文
此处以配置线程池配置举例使用:
@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolExecutor threadPoolExecutor(){
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
20,
200,
20,
TimeUnit.SECONDS,
new LinkedBlockingDeque<>(100000),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
return threadPoolExecutor;
}
}
如上,我们配置了线程池的在容器中,但是我们发现以上的代码的线程池核心数、最大线程数、keepalive时间都是耦合在代码中的,那我们想解耦,想把他移动至Spring的配置文件中可以吗?
- 那我们就可以先创建一个类,这个类是去读取配置文件中的数据的,如下:
@ConfigurationProperties(prefix = "achangmall.thread")
@Component
@Data
public class ThreadPoolConfigProperties {
private Integer coreSize;
private Integer MaxSize;
private Integer keepAliveTime;
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
这样子,我们在写Spring配置文件中的时候就会有联想
记得需要重启一下项目才可以有联想提示
- 因为我们已经把读取配置文件的类
ThreadPoolConfigProperties 加入了Spring容器中,所以我们可以直接用入参体去直接注入
@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolExecutor threadPoolExecutor(ThreadPoolConfigProperties pool){
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
pool.getCoreSize(),
pool.getMaxSize(),
pool.getKeepAliveTime(),
TimeUnit.SECONDS, new LinkedBlockingDeque<>(100000),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
return threadPoolExecutor;
}
}
如上的操作之后,
就可以自定义Spring配置文件提示和解耦配置类中的配置到配置文件中!!!
|