mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
fix: @PowerJobHandler does not work in cglib proxy #770
This commit is contained in:
parent
4be6a139dd
commit
e63dc91643
@ -0,0 +1,16 @@
|
||||
package tech.powerjob.samples.anno;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* 自定义方法注解
|
||||
* <a href="https://github.com/PowerJob/PowerJob/issues/770">自定义注解导致 @PowerJobHandler 失效</a>
|
||||
*
|
||||
* @author tjq
|
||||
* @since 2024/2/8
|
||||
*/
|
||||
@Target({ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Inherited
|
||||
public @interface ATestMethodAnnotation {
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package tech.powerjob.samples.tester;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import tech.powerjob.samples.anno.ATestMethodAnnotation;
|
||||
import tech.powerjob.worker.annotation.PowerJobHandler;
|
||||
import tech.powerjob.worker.core.processor.TaskContext;
|
||||
import tech.powerjob.worker.log.OmsLogger;
|
||||
@ -33,4 +34,12 @@ public class SpringMethodProcessorService {
|
||||
omsLogger.warn("testThrowException");
|
||||
throw new IllegalArgumentException("test");
|
||||
}
|
||||
|
||||
@ATestMethodAnnotation
|
||||
@PowerJobHandler(name = "testNormalReturnWithCustomAnno")
|
||||
public String testNormalReturnWithCustomAnno(TaskContext context) {
|
||||
OmsLogger omsLogger = context.getOmsLogger();
|
||||
omsLogger.warn("测试自定义注解");
|
||||
return "testNormalReturnWithCustomAnno";
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package tech.powerjob.worker.processor.impl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.core.annotation.AnnotationUtils;
|
||||
import tech.powerjob.worker.annotation.PowerJobHandler;
|
||||
import tech.powerjob.worker.extension.processor.ProcessorBean;
|
||||
import tech.powerjob.worker.extension.processor.ProcessorDefinition;
|
||||
@ -51,6 +52,12 @@ public class BuildInSpringMethodProcessorFactory extends AbstractBuildInSpringPr
|
||||
Method[] methods = bean.getClass().getDeclaredMethods();
|
||||
for (Method method : methods) {
|
||||
PowerJobHandler powerJob = method.getAnnotation(PowerJobHandler.class);
|
||||
|
||||
// CGLib代理对象拿不到该注解, 通过 AnnotationUtils.findAnnotation()可以获取到注解 by GitHub@zhangxiang0907 https://github.com/PowerJob/PowerJob/issues/770
|
||||
if (powerJob == null) {
|
||||
powerJob = AnnotationUtils.findAnnotation(method, PowerJobHandler.class);
|
||||
}
|
||||
|
||||
if (powerJob == null) {
|
||||
continue;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user