Browse Source

执行器初始化逻辑优化:修复懒加载的Bean被提前初始化问题;

xuxueli 5 years ago
parent
commit
2665933180

+ 7 - 6
doc/XXL-JOB官方文档.md

@@ -1728,12 +1728,13 @@ method: get 或 post
 data: post-data
 ```
 - 15、执行器注册逻辑优化:新增配置项 ”注册地址 / xxl.job.executor.address“,优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
-- 16、[迭代中]自定义失败重试时间间隔;
-- 17、[迭代中]任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息;
-- 18、[迭代中]新增执行器描述、任务描述属性;
-- 19、[迭代中]任务执行一次的时候指定IP;
-- 20、[迭代中]任务日志支持单个清理和状态转移,方便触发子任务;
-- 21、[迭代中]任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败;
+- 16、执行器初始化逻辑优化:修复懒加载的Bean被提前初始化问题;
+- 17、[迭代中]自定义失败重试时间间隔;
+- 18、[迭代中]任务复制功能;点击复制是弹出新建任务弹框,并初始化被复制任务信息;
+- 19、[迭代中]新增执行器描述、任务描述属性;
+- 20、[迭代中]任务执行一次的时候指定IP;
+- 21、[迭代中]任务日志支持单个清理和状态转移,方便触发子任务;
+- 22、[迭代中]任务结果丢失处理:针对长期处于运行中的任务(设置过期时间时,运行超过"过期时间+1min";未设置超时时间时,运行超过"30min"),主动检测该执行器是否在线,如果不在线主动标记失败;
 
 
 ### TODO LIST

+ 9 - 5
xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java

@@ -9,7 +9,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.SmartInitializingSingleton;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.core.MethodIntrospector;
@@ -24,13 +24,13 @@ import java.util.Map;
  *
  * @author xuxueli 2018-11-01 09:24:52
  */
-public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationContextAware, InitializingBean, DisposableBean {
+public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationContextAware, SmartInitializingSingleton, DisposableBean {
     private static final Logger logger = LoggerFactory.getLogger(XxlJobSpringExecutor.class);
 
 
     // start
     @Override
-    public void afterPropertiesSet() throws Exception {
+    public void afterSingletonsInstantiated() {
 
         // init JobHandler Repository
         /*initJobHandlerRepository(applicationContext);*/
@@ -42,7 +42,11 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
         GlueFactory.refreshInstance(1);
 
         // super start
-        super.start();
+        try {
+            super.start();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 
     // destroy
@@ -93,7 +97,7 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
                             }
                         });
             } catch (Throwable ex) {
-                logger.debug("xxl-job method-jobhandler resolve error for bean[" + beanDefinitionName + "].", ex);
+                logger.error("xxl-job method-jobhandler resolve error for bean[" + beanDefinitionName + "].", ex);
             }
             if (annotatedMethods==null || annotatedMethods.isEmpty()) {
                 continue;