From 39893b1e92ac48a085e5bcd4a5d923541461429e Mon Sep 17 00:00:00 2001 From: tjq Date: Wed, 1 Feb 2023 22:13:52 +0800 Subject: [PATCH] feat: optimize PowerJobSpringWorker --- .../PowerJobAutoConfiguration.java | 3 +-- .../powerjob/worker/PowerJobSpringWorker.java | 22 ++++++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/powerjob-worker-spring-boot-starter/src/main/java/tech/powerjob/worker/autoconfigure/PowerJobAutoConfiguration.java b/powerjob-worker-spring-boot-starter/src/main/java/tech/powerjob/worker/autoconfigure/PowerJobAutoConfiguration.java index 77da03f3..abc1d957 100644 --- a/powerjob-worker-spring-boot-starter/src/main/java/tech/powerjob/worker/autoconfigure/PowerJobAutoConfiguration.java +++ b/powerjob-worker-spring-boot-starter/src/main/java/tech/powerjob/worker/autoconfigure/PowerJobAutoConfiguration.java @@ -8,7 +8,6 @@ import org.springframework.context.annotation.Configuration; import tech.powerjob.common.utils.CommonUtils; import tech.powerjob.common.utils.NetUtils; import tech.powerjob.worker.PowerJobSpringWorker; -import tech.powerjob.worker.PowerJobWorker; import tech.powerjob.worker.common.PowerJobWorkerConfig; import java.util.Arrays; @@ -27,7 +26,7 @@ public class PowerJobAutoConfiguration { @Bean @ConditionalOnMissingBean - public PowerJobWorker initPowerJob(PowerJobProperties properties) { + public PowerJobSpringWorker initPowerJob(PowerJobProperties properties) { PowerJobProperties.Worker worker = properties.getWorker(); diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/PowerJobSpringWorker.java b/powerjob-worker/src/main/java/tech/powerjob/worker/PowerJobSpringWorker.java index c089fb43..0bc21136 100644 --- a/powerjob-worker/src/main/java/tech/powerjob/worker/PowerJobSpringWorker.java +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/PowerJobSpringWorker.java @@ -21,16 +21,22 @@ import java.util.Optional; * @author tjq * @since 2023/1/20 */ -public class PowerJobSpringWorker extends PowerJobWorker implements ApplicationContextAware, InitializingBean, DisposableBean { +public class PowerJobSpringWorker implements ApplicationContextAware, InitializingBean, DisposableBean { + /** + * 组合优于继承,持有 PowerJobWorker,内部重新设置 ProcessorFactory 更优雅 + */ + private PowerJobWorker powerJobWorker; + private final PowerJobWorkerConfig config; public PowerJobSpringWorker(PowerJobWorkerConfig config) { - super(config); + this.config = config; } @Override public void afterPropertiesSet() throws Exception { - init(); + powerJobWorker = new PowerJobWorker(config); + powerJobWorker.init(); } @Override @@ -38,12 +44,16 @@ public class PowerJobSpringWorker extends PowerJobWorker implements ApplicationC BuiltInSpringProcessorFactory springProcessorFactory = new BuiltInSpringProcessorFactory(applicationContext); // append BuiltInSpringProcessorFactory - PowerJobWorkerConfig workerConfig = workerRuntime.getWorkerConfig(); + List processorFactories = Lists.newArrayList( - Optional.ofNullable(workerConfig.getProcessorFactoryList()) + Optional.ofNullable(config.getProcessorFactoryList()) .orElse(Collections.emptyList())); processorFactories.add(springProcessorFactory); - workerConfig.setProcessorFactoryList(processorFactories); + config.setProcessorFactoryList(processorFactories); } + @Override + public void destroy() throws Exception { + powerJobWorker.destroy(); + } }