Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringAOP方面不截取带注释的方法_Java_Aspectj_Spring Aop - Fatal编程技术网

Java SpringAOP方面不截取带注释的方法

Java SpringAOP方面不截取带注释的方法,java,aspectj,spring-aop,Java,Aspectj,Spring Aop,我想在我的函数中使用

我想在我的函数中使用
@posterhrowing
。 如果其他函数使用注释,如
@MyAspectTest
,则应在相关时间运行
beforeAction()
afterAction()
afterExcept()
。 但是,它似乎不起作用

我已经输入了依赖项并修改了bean

package com.service.metrics;
导入com.mgr.CMPMgr;
导入org.aspectj.lang.JoinPoint;
导入org.aspectj.lang.annotation.After;
导入org.aspectj.lang.annotation.Aspect;
导入org.aspectj.lang.annotation.Before;
导入org.aspectj.lang.annotation.afterhrowing;
导入java.lang.reflect.Method;
@面貌
公共类cmp谱{
@之前(value=“@annotation(com.mgr.CMPMgr)”)
public void beforeAction(JoinPoint JoinPoint)引发ClassNotFoundException{
测试代码
}
@之后(value=“@annotation(com.mgr.CMPMgr)”)
公共无效事后行动(){
测试代码
}
@后置(value=“@annotation(com.mgr.CMPMgr)”)
除(){
测试代码
}
}
package.com.mgr;
公共@接口CMPMgr{
字符串名()默认为“”;
long startTime=System.currentTimeMillis();
}
@CMPMgr(name=“vipGet”)
@得到
@产生({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@路径(“/{lbId}”)
公共响应获取(@PathParam(“lbId”)字符串lbId,
@HeaderParam(“授权”)字符串基本数据,
@HeaderParam(“用户ID”)字符串(代表){

org.aspectj
aspectjrt
1.8.0
org.aspectj
aspectjweaver
1.8.0


它应该进入方面功能。但我发现它在调试模式下无法工作。为什么?

我想到了一些事情:

  • 您的批注需要运行时保留,但我在代码中没有看到
    @retention(RetentionPolicy.runtime)
  • 您的方面应该是一个
    @组件
    ,但我也没有看到相应的注释
  • 包含方法
    public Response get(..)
    的目标类也必须是Spring bean/组件。因为您只显示不连贯的片段,而不是完整的类定义,我不知道该类驻留在哪个包中,如果它是Spring组件,以及是否通过组件扫描获取

    • 我想到了一些事情:

      • 您的批注需要运行时保留,但我在代码中没有看到
        @retention(RetentionPolicy.runtime)
      • 您的方面应该是一个
        @组件
        ,但我也没有看到相应的注释
      • 包含方法
        public Response get(..)
        的目标类也必须是Spring bean/组件。因为您只显示不连贯的片段,而不是完整的类定义,我不知道该类驻留在哪个包中,如果它是Spring组件,以及是否通过组件扫描获取

      您需要为after/before提供方法,或者至少提供通配符。您的示例代码不完整。请注意了解并相应地编写/编辑您的问题。否则,我必须像我在回答中那样进行有根据的猜测,这是次优的,因为它可能对您有帮助,也可能没有。您需要提供方法f或者在它之后/之前,或者至少是通配符。您的示例代码不完整。请注意了解并相应地编写/编辑您的问题。否则,我必须像我在回答中所做的那样进行有根据的猜测,这是次优的,因为它可能对您有帮助,可能没有。谢谢您的反馈!我添加了组件并@Retention(RetentionPolicy.RUNTIME)。它现在可以工作了。我需要用谷歌搜索详细信息~谷歌没有必要,就可以了。哦,顺便说一下,请单击我答案旁边的灰色复选标记以接受它,然后它将变为绿色。Thx供您反馈!我添加了组件和@RetentionPolicy(RetentionPolicy.RUNTIME)。现在可以了。我需要用谷歌搜索详细信息~谷歌没有必要,可以。哦,顺便说一句,请点击我答案旁边的灰色复选标记以接受它,然后它将变为绿色。