From b6d2595ae8020332cd51c53d448205e9dc132a0d Mon Sep 17 00:00:00 2001 From: qxo <49526356@qq.com> Date: Tue, 2 Jan 2024 13:33:48 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20@Bean=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E4=BC=98=E5=8C=96,=20=E4=BB=A5=E6=B6=88=E9=99=A4:is=20not=20el?= =?UTF-8?q?igible=20for=20getting=20processed=20by=20all=20BeanPostProcess?= =?UTF-8?q?ors=20(#608)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 由于Advisor会优先初始化,故相关@Bean应加: @Role(BeanDefinition.ROLE_INFRASTRUCTURE) 以消除:is not eligible for getting processed by all BeanPostProcessors 2. 去除@EnableConfigurationProperties(DynamicDataSourceProperties.class) 改为static方式配置是为了加@Role(BeanDefinition.ROLE_INFRASTRUCTURE) 3. spring 5.2+ 配置类如不内部不存在@Bean方法引用应加: proxyBeanMethods = false 以去除不必要代理类 ie: `@Configuration(proxyBeanMethods = false)` 此PR是了消除启动时的以下日志: ``` [restartedMain] INFO o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker[376] - Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 12-23 09:29:16.779 [restartedMain] INFO o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker[376] - Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) ``` --- .../DynamicDataSourceAssistConfiguration.java | 2 -- .../DynamicDataSourceAopConfiguration.java | 13 +++++++++---- .../DynamicDataSourceAutoConfiguration.java | 2 -- .../DynamicDataSourceAopConfiguration.java | 11 ++++++++--- .../DynamicDataSourceAutoConfiguration.java | 3 +-- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAssistConfiguration.java b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAssistConfiguration.java index fab168f9..de5ef4f8 100644 --- a/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAssistConfiguration.java +++ b/dynamic-datasource-spring-boot-common/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAssistConfiguration.java @@ -26,7 +26,6 @@ import com.baomidou.dynamic.datasource.tx.DsTxEventListenerFactory; import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; @@ -44,7 +43,6 @@ */ @Configuration @RequiredArgsConstructor -@EnableConfigurationProperties(DynamicDataSourceProperties.class) public class DynamicDataSourceAssistConfiguration { private final DynamicDataSourceProperties properties; diff --git a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java index acc1fad0..04258777 100644 --- a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java +++ b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java @@ -32,7 +32,6 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Role; @@ -47,8 +46,8 @@ * @see DynamicRoutingDataSource * @since 1.0.0 */ -@Configuration -@EnableConfigurationProperties(DynamicDataSourceProperties.class) +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) +@Configuration(proxyBeanMethods = false) public class DynamicDataSourceAopConfiguration { private final DynamicDataSourceProperties properties; @@ -57,6 +56,13 @@ public DynamicDataSourceAopConfiguration(DynamicDataSourceProperties properties) this.properties = properties; } + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) + @Bean + public static DynamicDataSourceProperties dynamicDataSourceProperties() { + return new DynamicDataSourceProperties(); + } + + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @Bean @ConditionalOnMissingBean public DsProcessor dsProcessor(BeanFactory beanFactory) { @@ -69,7 +75,6 @@ public DsProcessor dsProcessor(BeanFactory beanFactory) { return headerProcessor; } - @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @Bean @ConditionalOnProperty(prefix = DynamicDataSourceProperties.PREFIX + ".aop", name = "enabled", havingValue = "true", matchIfMissing = true) diff --git a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java index ae90443f..854a8458 100644 --- a/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java +++ b/dynamic-datasource-spring-boot-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java @@ -25,7 +25,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -45,7 +44,6 @@ */ @Slf4j @Configuration -@EnableConfigurationProperties(DynamicDataSourceProperties.class) @AutoConfigureBefore(value = DataSourceAutoConfiguration.class, name = "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure") @Import({DruidDynamicDataSourceConfiguration.class, DynamicDataSourceCreatorAutoConfiguration.class, DynamicDataSourceAopConfiguration.class, DynamicDataSourceAssistConfiguration.class}) @ConditionalOnProperty(prefix = DynamicDataSourceProperties.PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) diff --git a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java index 5d9c03c8..1933f078 100644 --- a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java +++ b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAopConfiguration.java @@ -32,7 +32,6 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Role; @@ -47,8 +46,7 @@ * @see DynamicRoutingDataSource * @since 1.0.0 */ -@Configuration -@EnableConfigurationProperties(DynamicDataSourceProperties.class) +@Configuration(proxyBeanMethods = false) public class DynamicDataSourceAopConfiguration { private final DynamicDataSourceProperties properties; @@ -57,6 +55,13 @@ public DynamicDataSourceAopConfiguration(DynamicDataSourceProperties properties) this.properties = properties; } + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) + @Bean + public static DynamicDataSourceProperties dynamicDataSourceProperties() { + return new DynamicDataSourceProperties(); + } + + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @Bean @ConditionalOnMissingBean public DsProcessor dsProcessor(BeanFactory beanFactory) { diff --git a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java index c42a38aa..ee965099 100644 --- a/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java +++ b/dynamic-datasource-spring-boot3-starter/src/main/java/com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.java @@ -40,8 +40,7 @@ * @since 1.0.0 */ @Slf4j -@Configuration -@EnableConfigurationProperties(DynamicDataSourceProperties.class) +@Configuration(proxyBeanMethods = false) @AutoConfigureBefore( value = DataSourceAutoConfiguration.class, name = {