From 5c3e0dd9f27bdf6b854c51b4a1fc3e4d0873fbf7 Mon Sep 17 00:00:00 2001
From: liaozan <378024053@qq.com>
Date: Wed, 3 May 2023 15:58:59 +0800
Subject: [PATCH] Reorder dependencies
---
commons/common-util/pom.xml | 4 +
pom.xml | 282 +++++++++---------
...enericPropertiesPreparedEventListener.java | 32 ++
.../PropertiesPreparedEventListener.java | 8 +-
...ropertiesPreparedEventListenerAdapter.java | 38 ---
.../DubboPropertiesPreparedEventListener.java | 10 +-
.../logger/LoggerAutoConfiguration.java | 3 -
...LoggerPropertiesPreparedEventListener.java | 4 +-
.../DataSourceConnectionPostProcessor.java | 13 +-
...ter.java => GenericBeanPostProcessor.java} | 42 ++-
10 files changed, 217 insertions(+), 219 deletions(-)
create mode 100644 starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/GenericPropertiesPreparedEventListener.java
delete mode 100644 starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListenerAdapter.java
rename support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/{BeanPostProcessorAdapter.java => GenericBeanPostProcessor.java} (77%)
diff --git a/commons/common-util/pom.xml b/commons/common-util/pom.xml
index afcaad7..b168689 100644
--- a/commons/common-util/pom.xml
+++ b/commons/common-util/pom.xml
@@ -19,6 +19,10 @@
com.schbrain.common
common
+
+ cglib
+ cglib
+
cn.hutool
hutool-all
diff --git a/pom.xml b/pom.xml
index 8dda134..b6e63f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,8 +49,8 @@
${revision}
${revision}
${revision}
- ${revision}
${revision}
+ ${revision}
${revision}
${revision}
${revision}
@@ -64,17 +64,15 @@
2.1.0
- 1.73
+ 1.73
3.3.0
5.5.0
- 3.5.1
4.4
1.23.0
1.9.4
2.11.0
3.2.0
1.2.17
- 3.5.0
3.2.1
1.2.83
2.0.29
@@ -87,18 +85,17 @@
3.5.3.1
2.5.1
5.3.2
-
-
3.18.0
8.15.0
2.0.2
3.8.1
+ 3.5.1
+ 4.6.3
2.16.16
3.1.1
1.2.6
- 4.6.3
3.16.2
@@ -130,36 +127,31 @@
+
- com.schbrain.common
- common
- ${schbrain-common.version}
+ com.schbrain.framework
+ apollo-spring-boot-starter
+ ${schbrain-apollo.version}
- com.schbrain.common
- common-util
- ${schbrain-common-util.version}
+ com.schbrain.framework
+ schbrain-base-dao
+ ${schbrain-base-dao.version}
- com.schbrain.common
- web-common
- ${schbrain-web-common.version}
+ com.schbrain.framework
+ cache-spring-boot-starter
+ ${schbrain-cache.version}
com.schbrain.common
- module-tree
- ${schbrain-module-tree.version}
-
-
-
- com.schbrain.framework
- apollo-spring-boot-starter
- ${schbrain-apollo.version}
+ common
+ ${schbrain-common.version}
- com.schbrain.framework
- cache-spring-boot-starter
- ${schbrain-cache.version}
+ com.schbrain.common
+ common-util
+ ${schbrain-common-util.version}
com.schbrain.framework
@@ -181,6 +173,11 @@
logger-spring-boot-starter
${schbrain-logger.version}
+
+ com.schbrain.common
+ module-tree
+ ${schbrain-module-tree.version}
+
com.schbrain.framework
mybatis-spring-boot-starter
@@ -193,30 +190,30 @@
com.schbrain.framework
- xxl-job-spring-boot-starter
- ${schbrain-xxl.version}
+ schbrain-spring-support
+ ${schbrain-spring-support.version}
- com.schbrain.framework
- schbrain-base-dao
- ${schbrain-base-dao.version}
+ com.schbrain.common
+ web-common
+ ${schbrain-web-common.version}
com.schbrain.framework
- schbrain-spring-support
- ${schbrain-spring-support.version}
+ xxl-job-spring-boot-starter
+ ${schbrain-xxl.version}
-
+
- cn.hutool
- hutool-all
- ${hutool.version}
+ com.ctrip.framework.apollo
+ apollo-client
+ ${apollo.version}
org.bouncycastle
bcprov-jdk18on
- ${bouncycastle.version}
+ ${bcprov-jdk18on.version}
cglib
@@ -224,19 +221,19 @@
${cglib.version}
- com.google.guava
- guava
- ${guava.version}
+ org.apache.curator
+ curator-recipes
+ ${curator.version}
- commons-io
- commons-io
- ${commons-io.version}
+ org.apache.curator
+ curator-x-discovery
+ ${curator.version}
- commons-beanutils
- commons-beanutils
- ${commons-beanutils.version}
+ org.apache.curator
+ curator-framework
+ ${curator.version}
org.apache.commons
@@ -248,6 +245,16 @@
commons-compress
${commons-compress.version}
+
+ commons-beanutils
+ commons-beanutils
+ ${commons-beanutils.version}
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
org.apache.commons
commons-lang3
@@ -258,31 +265,6 @@
commons-pool2
${commons-pool2.version}
-
- com.belerweb
- pinyin4j
- ${pinyin4j.version}
-
-
- com.google.zxing
- core
- ${com.google.zxing.version}
-
-
- com.alibaba
- fastjson
- ${fastjson.version}
-
-
- com.alibaba.fastjson2
- fastjson2
- ${fastjson2.version}
-
-
- com.alibaba
- easyexcel
- ${easyexcel.version}
-
org.apache.dubbo
dubbo
@@ -293,7 +275,6 @@
dubbo-spring-boot-starter
${dubbo.version}
-
org.apache.dubbo
dubbo-common
@@ -356,29 +337,49 @@
- org.apache.zookeeper
- zookeeper
- ${zookeeper.version}
+ com.alibaba
+ druid
+ ${druid.version}
- org.apache.curator
- curator-recipes
- ${curator.version}
+ com.alibaba
+ druid-spring-boot-starter
+ ${druid.version}
- org.apache.curator
- curator-x-discovery
- ${curator.version}
+ com.alibaba
+ easyexcel
+ ${easyexcel.version}
- org.apache.curator
- curator-framework
- ${curator.version}
+ com.alibaba
+ fastjson
+ ${fastjson.version}
- com.github.pagehelper
- pagehelper
- ${pagehelper.version}
+ com.alibaba.fastjson2
+ fastjson2
+ ${fastjson2.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ com.google.inject
+ guice
+ ${guice.version}
+
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
+ net.logstash.logback
+ logstash-logback-encoder
+ ${logstash-logback-encoder.version}
org.mybatis
@@ -402,29 +403,56 @@
- com.alibaba
- druid
- ${druid.version}
+ com.belerweb
+ pinyin4j
+ ${pinyin4j.version}
- com.alibaba
- druid-spring-boot-starter
- ${druid.version}
+ com.github.pagehelper
+ pagehelper
+ ${pagehelper.version}
- com.ctrip.framework.apollo
- apollo-client
- ${apollo.version}
+ org.redisson
+ redisson
+ ${redisson.version}
- com.google.inject
- guice
- ${guice.version}
+ org.redisson
+ redisson-spring-boot-starter
+ ${redisson.version}
+
+
+ org.apache.skywalking
+ apm-toolkit-trace
+ ${skywalking-tooklit.version}
+
+
+ org.apache.skywalking
+ apm-toolkit-logback-1.x
+ ${skywalking-tooklit.version}
+
+ com.xuxueli
+ xxl-job-core
+ ${xxl-job.version}
+
+
+ org.apache.zookeeper
+ zookeeper
+ ${zookeeper.version}
+
+
+ com.google.zxing
+ core
+ ${zxing-core.version}
+
+
+
com.aliyun
aliyun-java-sdk-core
- ${aliyun-sdk-core.version}
+ ${aliyun-java-sdk-core.version}
commons-logging
@@ -436,6 +464,11 @@
+
+ com.aliyun
+ aliyun-java-sdk-vod
+ ${aliyun-java-sdk-vod.version}
+
com.aliyun.oss
aliyun-sdk-oss
@@ -449,14 +482,15 @@
com.aliyun
- aliyun-java-sdk-vod
- ${aliyun-java-sdk-vod.version}
+ aliyun-java-sdk-sts
+ ${aliyun-java-sdk-sts.version}
com.aliyun
- aliyun-java-sdk-sts
- ${aliyun-java-sdk-sts.version}
+ aliyun-java-sdk-dypnsapi
+ ${aliyun-java-sdk-dypnsapi.version}
+
com.aliyun
@@ -468,11 +502,6 @@
aliyun-gateway-pop
${aliyun-gateway-pop.version}
-
- com.aliyun
- aliyun-java-sdk-dypnsapi
- ${aliyun-java-sdk-dypnsapi.version}
-
com.aliyun
alibabacloud-sts20150401
@@ -493,6 +522,7 @@
alibabacloud-dysmsapi20170525
${alibabacloud-dysmsapi20170525.version}
+
com.aliyun
@@ -504,36 +534,6 @@
dingtalk
${aliyun-dingtalk-sdk.version}
-
- org.redisson
- redisson
- ${redisson.version}
-
-
- org.redisson
- redisson-spring-boot-starter
- ${redisson.version}
-
-
- org.apache.skywalking
- apm-toolkit-trace
- ${skywalking-tooklit.version}
-
-
- org.apache.skywalking
- apm-toolkit-logback-1.x
- ${skywalking-tooklit.version}
-
-
- net.logstash.logback
- logstash-logback-encoder
- ${logstash-logback-encoder.version}
-
-
- com.xuxueli
- xxl-job-core
- ${xxl-job.version}
-
diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/GenericPropertiesPreparedEventListener.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/GenericPropertiesPreparedEventListener.java
new file mode 100644
index 0000000..dd066d7
--- /dev/null
+++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/GenericPropertiesPreparedEventListener.java
@@ -0,0 +1,32 @@
+package com.schbrain.framework.autoconfigure.apollo.listener;
+
+import com.schbrain.common.util.support.ConfigurableProperties;
+import org.apache.commons.logging.Log;
+import org.springframework.core.ResolvableType;
+
+/**
+ * @author liaozan
+ * @since 2023-04-28
+ */
+@SuppressWarnings("unchecked")
+public abstract class GenericPropertiesPreparedEventListener implements PropertiesPreparedEventListener {
+
+ protected final ResolvableType propertiesType;
+
+ protected Log log;
+
+ public GenericPropertiesPreparedEventListener() {
+ this.propertiesType = ResolvableType.forInstance(this).getSuperType().getGeneric(0);
+ }
+
+ @Override
+ public void onApplicationEvent(PropertiesPreparedEvent event) {
+ if (propertiesType.isInstance(event.getConfigurableProperties())) {
+ this.log = event.getDeferredLogFactory().getLog(getClass());
+ this.onPropertiesPrepared(event, (T) event.getConfigurableProperties());
+ }
+ }
+
+ protected abstract void onPropertiesPrepared(PropertiesPreparedEvent event, T configurableProperties);
+
+}
\ No newline at end of file
diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListener.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListener.java
index f8707b2..25ec140 100644
--- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListener.java
+++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListener.java
@@ -1,11 +1,17 @@
package com.schbrain.framework.autoconfigure.apollo.listener;
import org.springframework.context.ApplicationListener;
+import org.springframework.core.Ordered;
/**
* @author liaozan
* @since 2023-04-29
*/
-public interface PropertiesPreparedEventListener extends ApplicationListener {
+public interface PropertiesPreparedEventListener extends ApplicationListener, Ordered {
+
+ @Override
+ default int getOrder() {
+ return Ordered.LOWEST_PRECEDENCE;
+ }
}
\ No newline at end of file
diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListenerAdapter.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListenerAdapter.java
deleted file mode 100644
index a6a364e..0000000
--- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/listener/PropertiesPreparedEventListenerAdapter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.schbrain.framework.autoconfigure.apollo.listener;
-
-import com.schbrain.common.util.support.ConfigurableProperties;
-import org.apache.commons.logging.Log;
-
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-
-/**
- * @author liaozan
- * @since 2023-04-28
- */
-@SuppressWarnings("unchecked")
-public class PropertiesPreparedEventListenerAdapter implements PropertiesPreparedEventListener {
-
- private final Class propertyType;
-
- protected Log log;
-
- public PropertiesPreparedEventListenerAdapter() {
- ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
- Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
- this.propertyType = (Class) actualTypeArguments[0];
- }
-
- @Override
- public void onApplicationEvent(PropertiesPreparedEvent event) {
- if (event.getConfigurableProperties().getClass() == propertyType) {
- this.log = event.getDeferredLogFactory().getLog(this.getClass());
- this.onPropertiesPrepared(event, (T) event.getConfigurableProperties());
- }
- }
-
- protected void onPropertiesPrepared(PropertiesPreparedEvent event, T configurableProperties) {
-
- }
-
-}
\ No newline at end of file
diff --git a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboPropertiesPreparedEventListener.java b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboPropertiesPreparedEventListener.java
index dc44c56..b54344b 100644
--- a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboPropertiesPreparedEventListener.java
+++ b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboPropertiesPreparedEventListener.java
@@ -3,13 +3,14 @@ package com.schbrain.framework.autoconfigure.dubbo.listener;
import com.alibaba.fastjson2.JSONFactory;
import com.google.common.collect.Maps;
import com.schbrain.common.util.ApplicationName;
+import com.schbrain.framework.autoconfigure.apollo.listener.GenericPropertiesPreparedEventListener;
import com.schbrain.framework.autoconfigure.apollo.listener.PropertiesPreparedEvent;
-import com.schbrain.framework.autoconfigure.apollo.listener.PropertiesPreparedEventListenerAdapter;
import com.schbrain.framework.autoconfigure.dubbo.properties.DubboProperties;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.ConfigCenterBean;
import org.apache.dubbo.config.spring.util.EnvironmentUtils;
import org.springframework.boot.SpringApplication;
+import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
import java.util.Map;
@@ -21,10 +22,15 @@ import static org.apache.dubbo.config.ConfigKeys.DUBBO_SCAN_BASE_PACKAGES;
* @author liaozan
* @since 2023-04-28
*/
-public class DubboPropertiesPreparedEventListener extends PropertiesPreparedEventListenerAdapter {
+public class DubboPropertiesPreparedEventListener extends GenericPropertiesPreparedEventListener {
public static final String DUBBO_APPLICATION_NAME = "dubbo.application.name";
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE;
+ }
+
@Override
protected void onPropertiesPrepared(PropertiesPreparedEvent event, DubboProperties properties) {
ConfigurableEnvironment environment = event.getEnvironment();
diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerAutoConfiguration.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerAutoConfiguration.java
index ffa870b..1470350 100644
--- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerAutoConfiguration.java
+++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerAutoConfiguration.java
@@ -3,10 +3,8 @@ package com.schbrain.framework.autoconfigure.logger;
import com.schbrain.framework.autoconfigure.logger.apollo.DynamicLoggerConfiguration;
import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties;
import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Import;
-import org.springframework.core.Ordered;
/**
* @author liaozan
@@ -14,7 +12,6 @@ import org.springframework.core.Ordered;
*/
@AutoConfiguration
@Import(DynamicLoggerConfiguration.class)
-@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
@EnableConfigurationProperties(LoggerProperties.class)
public class LoggerAutoConfiguration {
diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerPropertiesPreparedEventListener.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerPropertiesPreparedEventListener.java
index be53dd2..a0f3b7d 100644
--- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerPropertiesPreparedEventListener.java
+++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerPropertiesPreparedEventListener.java
@@ -8,8 +8,8 @@ import com.ctrip.framework.apollo.core.enums.ConfigFileFormat;
import com.google.common.collect.Maps;
import com.schbrain.common.util.InetUtils;
import com.schbrain.common.util.InetUtils.HostInfo;
+import com.schbrain.framework.autoconfigure.apollo.listener.GenericPropertiesPreparedEventListener;
import com.schbrain.framework.autoconfigure.apollo.listener.PropertiesPreparedEvent;
-import com.schbrain.framework.autoconfigure.apollo.listener.PropertiesPreparedEventListenerAdapter;
import com.schbrain.framework.autoconfigure.logger.LoggerConfigurationInitializer;
import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties;
import org.springframework.core.env.ConfigurableEnvironment;
@@ -25,7 +25,7 @@ import static org.springframework.boot.context.logging.LoggingApplicationListene
* @author liaozan
* @since 2023-04-28
*/
-public class LoggerPropertiesPreparedEventListener extends PropertiesPreparedEventListenerAdapter {
+public class LoggerPropertiesPreparedEventListener extends GenericPropertiesPreparedEventListener {
@Override
protected void onPropertiesPrepared(PropertiesPreparedEvent event, LoggerProperties properties) {
diff --git a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/datasource/DataSourceConnectionPostProcessor.java b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/datasource/DataSourceConnectionPostProcessor.java
index a18a2f9..a05023b 100644
--- a/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/datasource/DataSourceConnectionPostProcessor.java
+++ b/starters/mybatis-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/mybatis/datasource/DataSourceConnectionPostProcessor.java
@@ -2,7 +2,7 @@ package com.schbrain.framework.autoconfigure.mybatis.datasource;
import com.schbrain.framework.autoconfigure.mybatis.datasource.customizer.DataSourceCustomizer;
import com.schbrain.framework.autoconfigure.mybatis.properties.DataSourceConnectionProperties;
-import com.schbrain.framework.support.spring.BeanPostProcessorAdapter;
+import com.schbrain.framework.support.spring.GenericBeanPostProcessor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.ObjectProvider;
@@ -15,7 +15,7 @@ import java.sql.SQLException;
* @since 2021/11/23
*/
@Slf4j
-public class DataSourceConnectionPostProcessor extends BeanPostProcessorAdapter {
+public class DataSourceConnectionPostProcessor extends GenericBeanPostProcessor {
// use ObjectProvider to avoid early initialization beans
private final ObjectProvider customizers;
@@ -29,14 +29,13 @@ public class DataSourceConnectionPostProcessor extends BeanPostProcessorAdapter<
@Override
protected void processBeforeInitialization(DataSource dataSource, String beanName) throws BeansException {
- DataSourceConnectionProperties connectionProperties = this.connectionProperties.getObject();
- customizers.orderedStream().forEach(customizer -> {
+ this.connectionProperties.ifAvailable(properties -> customizers.orderedStream().forEach(customizer -> {
try {
- customizer.customize(dataSource, connectionProperties);
+ customizer.customize(dataSource, properties);
} catch (SQLException e) {
- log.warn("failed to customize dataSource connectionProperties", e);
+ log.warn("Failed to customize dataSource connectionProperties", e);
}
- });
+ }));
}
}
\ No newline at end of file
diff --git a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/BeanPostProcessorAdapter.java b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/GenericBeanPostProcessor.java
similarity index 77%
rename from support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/BeanPostProcessorAdapter.java
rename to support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/GenericBeanPostProcessor.java
index fc77e4f..ec9ced6 100644
--- a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/BeanPostProcessorAdapter.java
+++ b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/GenericBeanPostProcessor.java
@@ -4,21 +4,18 @@ import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor;
import org.springframework.context.*;
+import org.springframework.core.ResolvableType;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.util.Assert;
-import org.springframework.util.ClassUtils;
-
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
/**
* @author liaozan
* @since 2021/11/22
*/
@SuppressWarnings({"unchecked", "unused"})
-public abstract class BeanPostProcessorAdapter implements SmartInstantiationAwareBeanPostProcessor, ApplicationContextAware {
+public abstract class GenericBeanPostProcessor implements SmartInstantiationAwareBeanPostProcessor, ApplicationContextAware {
- private final Class beanType;
+ private final ResolvableType beanType;
protected ConfigurableApplicationContext applicationContext;
@@ -26,38 +23,37 @@ public abstract class BeanPostProcessorAdapter implements SmartInstantiationA
protected ConfigurableEnvironment environment;
- public BeanPostProcessorAdapter() {
- ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
- Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
- this.beanType = (Class) actualTypeArguments[0];
+ public GenericBeanPostProcessor() {
+ this.beanType = ResolvableType.forInstance(this).getSuperType().getGeneric(0);
}
@Override
public final Object postProcessBeforeInstantiation(Class> beanClass, String beanName) throws BeansException {
- if (ClassUtils.isAssignable(beanType, beanClass)) {
+ if (beanType.isAssignableFrom(beanClass)) {
return doPostProcessBeforeInstantiation((Class) beanClass);
}
return null;
}
@Override
- public final Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
- if (ClassUtils.isAssignableValue(beanType, bean)) {
- return doPostProcessBeforeInitialization((T) bean, beanName);
- }
- return bean;
- }
-
public final boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {
- if (ClassUtils.isAssignableValue(beanType, bean)) {
+ if (beanType.isInstance(bean)) {
return doPostProcessAfterInstantiation((T) bean);
}
return true;
}
+ @Override
+ public final Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
+ if (beanType.isInstance(bean)) {
+ return doPostProcessBeforeInitialization((T) bean, beanName);
+ }
+ return bean;
+ }
+
@Override
public final Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- if (ClassUtils.isAssignableValue(beanType, bean)) {
+ if (beanType.isInstance(bean)) {
return doPostProcessAfterInitialization((T) bean, beanName);
}
return bean;
@@ -65,16 +61,12 @@ public abstract class BeanPostProcessorAdapter implements SmartInstantiationA
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
- Assert.isInstanceOf(ConfigurableApplicationContext.class, context, "require ConfigurableApplicationContext");
+ Assert.isInstanceOf(ConfigurableApplicationContext.class, context, "Require ConfigurableApplicationContext");
this.applicationContext = (ConfigurableApplicationContext) context;
this.beanFactory = this.applicationContext.getBeanFactory();
this.environment = this.applicationContext.getEnvironment();
}
- public final Class getBeanType() {
- return beanType;
- }
-
// region Instantiation
protected T doPostProcessBeforeInstantiation(Class beanClass) {
return null;
--
GitLab