[英]java.lang.IllegalArgumentException: error Type referred to is not an annotation type
[英]custom annotations && aspects error java.lang.IllegalArgumentException: error Type referred to is not an annotation type
我正在尝试制作和围绕自定义注释。 我有这个注释:
@Target({ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface BatchControlAnnotation{
public Class<?> classType();
public String batchName() default "none";
}
我有这方面的切入点:
@Around("@annotation(BatchControlAnnotation)")
public Object beforeBatch(ProceedingJoinPoint punto, BatchControlAnnotation batchControlAnnotation) throws Throwable {
log.debug("HEMOS ENTRADO EN EL ASPECTO, HEMOS CONSEGUIDO LOS VALIRES DE LA ANOTACION CLASSTYPE : {} BATCHNAME {}", batchControlAnnotation.classType().getName(), batchControlAnnotation.batchName());
log.debug("before");
Object obj = null;
try {
obj = punto.proceed();
} catch (Throwable e) {
log.error(e.getMessage(), e);
throw e;
}
log.debug("after");
return obj;
}
但我收到这个错误,我不明白为什么:
org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration':bean的初始化失败; 嵌套异常是java.lang.IllegalArgumentException:error引用的类型不是注释类型:位于org的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)。在org.springframework.beans.factory的org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)的springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:317) .support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)在org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java :238)org.springframework.conte上的org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:710) 位于org.springframework.boot.SpringApplication.refresh(SpringApplication。 java:759)org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395)atg.springframework.boot.SpringApplication.run(SpringApplication.java:327)at com.karabati.ApibackApp.main(ApibackApp.java) :61)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang。在org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)中反映.Method.invoke(Method.java:498)
请问有什么想法发生了什么吗? 或者如何解决?
好的,我已经看到了问题所在。
@Around("@annotation(BatchControlAnnotation)")
public Object beforeBatch(ProceedingJoinPoint punto, BatchControlAnnotation batchControlAnnotation) throws Throwable
问题出在这一行:
@Around("@annotation(***BatchControlAnnotation***)")
标记的文本必须引用函数beforeBatch
定义中的变量名,我指的是类型。 所以...将BatchControlAnnotation
更改为batchControlAnnotation
,现在它可以正常工作。
有必要使用变量名称而不是类型,这很有趣,但就是这样....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.