Skip to content

Commit 0d33fab

Browse files
committed
feat: 修改覆盖 DtpLifeCycle bean 的方式
1. 通过 BeanDefinitionRegistryPostProcessor 覆盖 BeanDefinition
1 parent 243536e commit 0d33fab

1 file changed

Lines changed: 20 additions & 9 deletions

File tree

framework/src/main/java/com/github/cadecode/uniboot/framework/config/ThreadPoolConfig.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
import org.dromara.dynamictp.core.thread.DtpExecutor;
1010
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
1111
import org.springframework.beans.BeansException;
12-
import org.springframework.beans.factory.config.BeanPostProcessor;
12+
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
13+
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
14+
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
15+
import org.springframework.beans.factory.support.GenericBeanDefinition;
1316
import org.springframework.context.Lifecycle;
1417
import org.springframework.context.SmartLifecycle;
1518
import org.springframework.context.annotation.Bean;
@@ -94,17 +97,25 @@ public Lifecycle taskSchedulerLifeCycle(ThreadPoolTaskScheduler taskScheduler) {
9497
}
9598

9699
/**
97-
* DynamicTp DtpLifCycle 后置处理,优雅关闭
100+
* BeanDefinitionRegistryPostProcessor
101+
* 覆盖 DynamicTp DtpLifCycle getPhase,定制关闭顺序,实现优雅停机
98102
*/
99103
@Bean
100-
public BeanPostProcessor executorLifecyclePostProcess() {
101-
return new BeanPostProcessor() {
104+
public BeanDefinitionRegistryPostProcessor executorLifecycleRegistryPostProcessor() {
105+
return new BeanDefinitionRegistryPostProcessor() {
102106
@Override
103-
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
104-
if (bean instanceof DtpLifecycle) {
105-
return new ExecutorLifeCycle();
106-
}
107-
return bean;
107+
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
108+
// 删除 DynamicTp bean dtpLifecycle
109+
registry.removeBeanDefinition("dtpLifecycle");
110+
// 注册自定义的 Lifecycle
111+
GenericBeanDefinition definition = new GenericBeanDefinition();
112+
definition.setBeanClass(ExecutorLifeCycle.class);
113+
registry.registerBeanDefinition("dtpLifecycle", definition);
114+
}
115+
116+
@Override
117+
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
118+
108119
}
109120
};
110121
}

0 commit comments

Comments
 (0)