当前位置: 首页 > 知识库问答 >
问题:

自定义注释&aspects错误java.lang.IllegalArgumentException:引用的错误类型不是注释类型

沈开畅
2023-03-14

我正在尝试创建一个自定义注释。我有这样的注释:

@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:引用的错误类型不是批注类型:******在org.springframework.beans.factor.support.abstractautowirecapablebeanfactor.createBean(abstractautowirecapablebeanfactor.java:498)在org.springframework.beans.factor.support.abstractbeanfactor.lambda$dogetbean$0(abstractbeanfactor.java:317)在xt.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:535)在org.springframework.boot.web.servlet.context.servletwebserverapplicationcontext.refresh(servletwebserverapplicationcontext.java:140)在org.springframework.boot.springapplication.refresh(servletwebserverapplicationcontext.java:759)在

孩子们知道发生了什么吗?或者怎么解决?

共有1个答案

范麒
2023-03-14

好吧,我已经看到问题出在哪里了。

@Around("@annotation(BatchControlAnnotation)")
public Object  beforeBatch(ProceedingJoinPoint punto, BatchControlAnnotation batchControlAnnotation) throws Throwable

问题就出在这条线上:

@Around("@annotation(***BatchControlAnnotation***)")

标记的文本必须引用函数beforebatch定义上的变量名,我引用的是类型。所以...将BatchControlAnnotation更改为BatchControlAnnotation,现在工作正常。

用变量名代替类型是很有趣的,但是是这样吗....

 类似资料: