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;
|
package tech.powerjob.samples.tester;
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import tech.powerjob.samples.anno.ATestMethodAnnotation;
|
||||||
import tech.powerjob.worker.annotation.PowerJobHandler;
|
import tech.powerjob.worker.annotation.PowerJobHandler;
|
||||||
import tech.powerjob.worker.core.processor.TaskContext;
|
import tech.powerjob.worker.core.processor.TaskContext;
|
||||||
import tech.powerjob.worker.log.OmsLogger;
|
import tech.powerjob.worker.log.OmsLogger;
|
||||||
@ -33,4 +34,12 @@ public class SpringMethodProcessorService {
|
|||||||
omsLogger.warn("testThrowException");
|
omsLogger.warn("testThrowException");
|
||||||
throw new IllegalArgumentException("test");
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
import tech.powerjob.worker.annotation.PowerJobHandler;
|
import tech.powerjob.worker.annotation.PowerJobHandler;
|
||||||
import tech.powerjob.worker.extension.processor.ProcessorBean;
|
import tech.powerjob.worker.extension.processor.ProcessorBean;
|
||||||
import tech.powerjob.worker.extension.processor.ProcessorDefinition;
|
import tech.powerjob.worker.extension.processor.ProcessorDefinition;
|
||||||
@ -51,6 +52,12 @@ public class BuildInSpringMethodProcessorFactory extends AbstractBuildInSpringPr
|
|||||||
Method[] methods = bean.getClass().getDeclaredMethods();
|
Method[] methods = bean.getClass().getDeclaredMethods();
|
||||||
for (Method method : methods) {
|
for (Method method : methods) {
|
||||||
PowerJobHandler powerJob = method.getAnnotation(PowerJobHandler.class);
|
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) {
|
if (powerJob == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user