阿昌教你自定义Spring配置文件提示

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿昌教你自定义Spring配置文件提示相关的知识,希望对你有一定的参考价值。

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;
}
  • 编写后,Spring提示我们一个地址 【Spring提示地址】,让我们引入一个maven依赖
<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配置文件提示和解耦配置类中的配置到配置文件中!!!

以上是关于阿昌教你自定义Spring配置文件提示的主要内容,如果未能解决你的问题,请参考以下文章

阿昌教你自定义注解验证Bean对象

阿昌教你自定义注解验证Bean对象

阿昌教你自定义拦截器&自定义参数解析器&自定义包装HttpServletRequest

阿昌教你自定义拦截器&自定义参数解析器&自定义包装HttpServletRequest

VS code自定义用户代码片段snippet

阿昌教你看懂SpringMVC执行流程