执行器任务Bean扫描逻辑优化,完善懒加载Bean检测及过滤机制;

pull/72/head
xuxueli 1 month ago
parent b5c5bf7b97
commit 0f994a6f21

@ -2580,10 +2580,11 @@ public void execute() {
- 8、【修复】调度预读任务数量调整改为调度线程池大小x10降低事务颗粒度提升性能及稳定性 - 8、【修复】调度预读任务数量调整改为调度线程池大小x10降低事务颗粒度提升性能及稳定性
- 9、【优化】调度不重不漏逻辑优化调度时间轮单刻度数据去重避免极端情况下任务重复执行时间轮转动时校验临近刻度避免极端情况下遗漏刻度 - 9、【优化】调度不重不漏逻辑优化调度时间轮单刻度数据去重避免极端情况下任务重复执行时间轮转动时校验临近刻度避免极端情况下遗漏刻度
- 10、【重构】调度过期策略、调度类型策略逻辑重构代码组件化拆分并完善日志提升健壮性及可维护性 - 10、【重构】调度过期策略、调度类型策略逻辑重构代码组件化拆分并完善日志提升健壮性及可维护性
- 11、【ING】UI框架重构升级提升交互体验 - 11、【优化】执行器任务Bean扫描逻辑优化完善懒加载Bean检测及过滤机制
- 12、【ING】调整资源加载逻辑移除不必要的拦截器逻辑提升页面加载效率 - 12、【ING】UI框架重构升级提升交互体验
- 13、【ING】规范API交互协议通用响应结构体调整为Response - 13、【ING】调整资源加载逻辑移除不必要的拦截器逻辑提升页面加载效率
- 14、【ING】Http通讯组件升级基于接口代理方式重构 - 14、【ING】规范API交互协议通用响应结构体调整为Response
- 15、【ING】Http通讯组件升级基于接口代理方式重构
### TODO LIST ### TODO LIST

@ -8,9 +8,10 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.SmartInitializingSingleton; import org.springframework.beans.factory.SmartInitializingSingleton;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Lazy; import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.MethodIntrospector; import org.springframework.core.MethodIntrospector;
import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotatedElementUtils;
@ -33,9 +34,6 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
@Override @Override
public void afterSingletonsInstantiated() { public void afterSingletonsInstantiated() {
// init JobHandler Repository
/*initJobHandlerRepository(applicationContext);*/
// init JobHandler Repository (for method) // init JobHandler Repository (for method)
initJobHandlerMethodRepository(applicationContext); initJobHandlerMethodRepository(applicationContext);
@ -56,29 +54,11 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
super.destroy(); super.destroy();
} }
/**
/*private void initJobHandlerRepository(ApplicationContext applicationContext) { * init job handler from method
if (applicationContext == null) { *
return; * @param applicationContext applicationContext
} */
// init job handler action
Map<String, Object> serviceBeanMap = applicationContext.getBeansWithAnnotation(JobHandler.class);
if (serviceBeanMap != null && serviceBeanMap.size() > 0) {
for (Object serviceBean : serviceBeanMap.values()) {
if (serviceBean instanceof IJobHandler) {
String name = serviceBean.getClass().getAnnotation(JobHandler.class).value();
IJobHandler handler = (IJobHandler) serviceBean;
if (loadJobHandler(name) != null) {
throw new RuntimeException("xxl-job jobhandler[" + name + "] naming conflicts.");
}
registJobHandler(name, handler);
}
}
}
}*/
private void initJobHandlerMethodRepository(ApplicationContext applicationContext) { private void initJobHandlerMethodRepository(ApplicationContext applicationContext) {
if (applicationContext == null) { if (applicationContext == null) {
return; return;
@ -87,12 +67,28 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
String[] beanDefinitionNames = applicationContext.getBeanNamesForType(Object.class, false, false); // allowEagerInit=false, avoid early initialization String[] beanDefinitionNames = applicationContext.getBeanNamesForType(Object.class, false, false); // allowEagerInit=false, avoid early initialization
for (String beanDefinitionName : beanDefinitionNames) { for (String beanDefinitionName : beanDefinitionNames) {
// filter system bean // skip system bean
if (isSystemBean(beanDefinitionName)) { if (isSystemBean(beanDefinitionName)) {
continue; continue;
} }
// get bean // skip lazy bean
if (applicationContext instanceof GenericApplicationContext genericApplicationContext) {
if (!genericApplicationContext.containsBeanDefinition(beanDefinitionName)) {
continue;
}
// valid lazy bean
BeanDefinition beanDefinition = genericApplicationContext.getBeanDefinition(beanDefinitionName);
if (beanDefinition.isLazyInit()) {
logger.debug("xxl-job bean-definition scan, skip lazy-init bean:{}", beanDefinitionName);
continue;
}
}
// load bean
Object bean = applicationContext.getBean(beanDefinitionName);
/*
skip lazy bean2
Object bean = null; Object bean = null;
Lazy onBean = applicationContext.findAnnotationOnBean(beanDefinitionName, Lazy.class); Lazy onBean = applicationContext.findAnnotationOnBean(beanDefinitionName, Lazy.class);
if (onBean!=null){ if (onBean!=null){
@ -101,6 +97,7 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
}else { }else {
bean = applicationContext.getBean(beanDefinitionName); bean = applicationContext.getBean(beanDefinitionName);
} }
*/
// filter method // filter method
Map<Method, XxlJob> annotatedMethods = null; // referred to org.springframework.context.event.EventListenerMethodProcessor.processBean Map<Method, XxlJob> annotatedMethods = null; // referred to org.springframework.context.event.EventListenerMethodProcessor.processBean
@ -149,13 +146,4 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
return applicationContext; return applicationContext;
} }
/*
BeanDefinitionRegistryPostProcessor
registry.getBeanDefine()
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
this.registry = registry;
}
* */
} }

Loading…
Cancel
Save