欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot的Customizer源碼解析

 更新時間:2023年08月22日 09:56:42   作者:codecraft  
這篇文章主要為大家介紹了springboot的Customizer源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

本文主要研究一下springboot的Customizer

TaskExecutorCustomizer

@FunctionalInterface
public interface TaskExecutorCustomizer {

    /**
     * Callback to customize a {@link ThreadPoolTaskExecutor} instance.
     * @param taskExecutor the task executor to customize
     */
    void customize(ThreadPoolTaskExecutor taskExecutor);

}

之后再構(gòu)造的時候通過ObjectProvider獲取即可

@Bean
    @ConditionalOnMissingBean
    public TaskExecutorBuilder taskExecutorBuilder(TaskExecutionProperties properties,
            ObjectProvider<TaskExecutorCustomizer> taskExecutorCustomizers,
            ObjectProvider<TaskDecorator> taskDecorator) {
        TaskExecutionProperties.Pool pool = properties.getPool();
        TaskExecutorBuilder builder = new TaskExecutorBuilder();
        builder = builder.queueCapacity(pool.getQueueCapacity());
        builder = builder.corePoolSize(pool.getCoreSize());
        builder = builder.maxPoolSize(pool.getMaxSize());
        builder = builder.allowCoreThreadTimeOut(pool.isAllowCoreThreadTimeout());
        builder = builder.keepAlive(pool.getKeepAlive());
        Shutdown shutdown = properties.getShutdown();
        builder = builder.awaitTermination(shutdown.isAwaitTermination());
        builder = builder.awaitTerminationPeriod(shutdown.getAwaitTerminationPeriod());
        builder = builder.threadNamePrefix(properties.getThreadNamePrefix());
        builder = builder.customizers(taskExecutorCustomizers.orderedStream()::iterator);
        builder = builder.taskDecorator(taskDecorator.getIfUnique());
        return builder;
    }
    /**
     * Set the {@link TaskExecutorCustomizer TaskExecutorCustomizers} that should be
     * applied to the {@link ThreadPoolTaskExecutor}. Customizers are applied in the order
     * that they were added after builder configuration has been applied. Setting this
     * value will replace any previously configured customizers.
     * @param customizers the customizers to set
     * @return a new builder instance
     * @see #additionalCustomizers(TaskExecutorCustomizer...)
     */
    public TaskExecutorBuilder customizers(TaskExecutorCustomizer... customizers) {
        Assert.notNull(customizers, "Customizers must not be null");
        return customizers(Arrays.asList(customizers));
    }

TaskSchedulerCustomizer

@FunctionalInterface
public interface TaskSchedulerCustomizer {
    /**
     * Callback to customize a {@link ThreadPoolTaskScheduler} instance.
     * @param taskScheduler the task scheduler to customize
     */
    void customize(ThreadPoolTaskScheduler taskScheduler);
}
    @Bean
    @ConditionalOnMissingBean
    public TaskSchedulerBuilder taskSchedulerBuilder(TaskSchedulingProperties properties,
            ObjectProvider<TaskSchedulerCustomizer> taskSchedulerCustomizers) {
        TaskSchedulerBuilder builder = new TaskSchedulerBuilder();
        builder = builder.poolSize(properties.getPool().getSize());
        Shutdown shutdown = properties.getShutdown();
        builder = builder.awaitTermination(shutdown.isAwaitTermination());
        builder = builder.awaitTerminationPeriod(shutdown.getAwaitTerminationPeriod());
        builder = builder.threadNamePrefix(properties.getThreadNamePrefix());
        builder = builder.customizers(taskSchedulerCustomizers);
        return builder;
    }
    /**
     * Set the {@link TaskSchedulerCustomizer TaskSchedulerCustomizers} that should be
     * applied to the {@link ThreadPoolTaskScheduler}. Customizers are applied in the
     * order that they were added after builder configuration has been applied. Setting
     * this value will replace any previously configured customizers.
     * @param customizers the customizers to set
     * @return a new builder instance
     * @see #additionalCustomizers(TaskSchedulerCustomizer...)
     */
    public TaskSchedulerBuilder customizers(TaskSchedulerCustomizer... customizers) {
        Assert.notNull(customizers, "Customizers must not be null");
        return customizers(Arrays.asList(customizers));
    }

RestTemplateCustomizer

@FunctionalInterface
public interface RestTemplateCustomizer {
    /**
     * Callback to customize a {@link RestTemplate} instance.
     * @param restTemplate the template to customize
     */
    void customize(RestTemplate restTemplate);
}
    @Bean
    @Lazy
    @ConditionalOnMissingBean
    public RestTemplateBuilderConfigurer restTemplateBuilderConfigurer(
            ObjectProvider<HttpMessageConverters> messageConverters,
            ObjectProvider<RestTemplateCustomizer> restTemplateCustomizers,
            ObjectProvider<RestTemplateRequestCustomizer<?>> restTemplateRequestCustomizers) {
        RestTemplateBuilderConfigurer configurer = new RestTemplateBuilderConfigurer();
        configurer.setHttpMessageConverters(messageConverters.getIfUnique());
        configurer.setRestTemplateCustomizers(restTemplateCustomizers.orderedStream().collect(Collectors.toList()));
        configurer.setRestTemplateRequestCustomizers(
                restTemplateRequestCustomizers.orderedStream().collect(Collectors.toList()));
        return configurer;
    }

小結(jié)

springboot提供了很多Customizer接口方便用戶自行擴展,非常值得設(shè)計組件的時候使用

以上就是springboot的Customizer源碼解析的詳細(xì)內(nèi)容,更多關(guān)于springboot Customizer的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解HDFS多文件Join操作的實例

    詳解HDFS多文件Join操作的實例

    這篇文章主要介紹了詳解HDFS多文件Join操作的實例的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Java中操作數(shù)組的Arrays類

    Java中操作數(shù)組的Arrays類

    大家好,本篇文章主要講的是Java中操作數(shù)組的Arrays類,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 在Java中判斷兩個Long對象是否相等

    在Java中判斷兩個Long對象是否相等

    這篇文章主要介紹了在Java中判斷兩個Long對象是否相等的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java構(gòu)造函數(shù)與普通函數(shù)用法詳解

    Java構(gòu)造函數(shù)與普通函數(shù)用法詳解

    本篇文章給大家詳細(xì)講述了Java構(gòu)造函數(shù)與普通函數(shù)用法以及相關(guān)知識點,對此有興趣的朋友可以參考學(xué)習(xí)下。
    2018-03-03
  • mybatis-flex與springBoot整合的實現(xiàn)示例

    mybatis-flex與springBoot整合的實現(xiàn)示例

    Mybatis-flex提供了簡單易用的API,開發(fā)者只需要簡單的配置即可使用,本文主要介紹了mybatis-flex與springBoot整合,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • JAXB命名空間及前綴_動力節(jié)點Java學(xué)院整理

    JAXB命名空間及前綴_動力節(jié)點Java學(xué)院整理

    這篇文章主要給大家介紹了關(guān)于JAXB命名空間及前綴的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Java調(diào)用Oss JDk實現(xiàn)刪除指定目錄下的所有文件

    Java調(diào)用Oss JDk實現(xiàn)刪除指定目錄下的所有文件

    這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用Oss JDk實現(xiàn)刪除指定目錄下的所有文件功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2025-03-03
  • Maven及Springboot配置JDK版本,編碼,源碼打包等方式

    Maven及Springboot配置JDK版本,編碼,源碼打包等方式

    這篇文章主要介紹了Maven及Springboot配置JDK版本,編碼,源碼打包等方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解Mybatis中的select方法

    詳解Mybatis中的select方法

    這篇文章主要介紹了Mybatis的select方法,通過代碼給大家詳細(xì)介紹了selectByExample方法,selectById方法,需要的朋友可以參考下
    2018-07-07
  • Spring容器的創(chuàng)建過程之如何注冊BeanPostProcessor詳解

    Spring容器的創(chuàng)建過程之如何注冊BeanPostProcessor詳解

    關(guān)于BeanPostProcessor 各位一定不陌生,今天整理的這篇文章總結(jié)了如何注冊BeanPostProcessor,文中有非常詳細(xì)的圖文示例,需要的朋友可以參考下
    2021-06-06

最新評論