阿昌教你自定义Spring配置文件提示
阿昌 Java小菜鸡
## 1、前言

总结一下今天在谷粒商城学习到自定义Spring配置文件的提示内容

2、正文

此处以配置线程池配置举例使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@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的配置文件中可以吗?

  • 那我们就可以先创建一个类,这个类是去读取配置文件中的数据的,如下:
1
2
3
4
5
6
7
8
9
//指定配置文件中的前缀是什么
@ConfigurationProperties(prefix = "achangmall.thread")
@Component
@Data
public class ThreadPoolConfigProperties {
private Integer coreSize;
private Integer MaxSize;
private Integer keepAliveTime;
}
  • 编写后,Spring提示我们一个地址 【Spring提示地址】,让我们引入一个maven依赖
1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

这样子,我们在写Spring配置文件中的时候就会有联想

image

记得需要重启一下项目才可以有联想提示

  • 因为我们已经把读取配置文件的类ThreadPoolConfigProperties加入了Spring容器中,所以我们可以直接用入参体去直接注入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@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配置文件提示和解耦配置类中的配置到配置文件中!!!

 请作者喝咖啡