首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Spring @Configuration和MethodInterceptor截取带注释的方法

使用Spring @Configuration和MethodInterceptor截取带注释的方法
EN

Stack Overflow用户
提问于 2012-12-13 22:43:53
回答 2查看 4.2K关注 0票数 5

我需要使用spring-aop截取带注释的方法。我已经有了拦截器,它实现了来自AOP Alliance的MethodInterceptor。

代码如下:

代码语言:javascript
运行
复制
@Configuration
public class MyConfiguration {

    // ...

    @Bean
    public MyInterceptor myInterceptor() {
      return new MyInterceptor();
    }
}
代码语言:javascript
运行
复制
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    // ...
}
代码语言:javascript
运行
复制
public class MyInterceptor implements MethodInterceptor {

    // ...

    @Override
    public Object invoke(final MethodInvocation invocation) throws Throwable {
        //does some stuff
    }
}

根据我过去所读到的,我可以使用@SpringAdvice注解来指定拦截器何时应该拦截某些东西,但这种情况已经不存在了。

有谁可以帮我?

非常感谢!

卢卡斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-17 21:59:34

如果有人对此感兴趣的话...显然,这是不可能做到的。为了单独使用Java (不使用XML类),您需要使用带有@aspect注释的AspectJ和Spring。

代码是这样结束的:

代码语言:javascript
运行
复制
@Aspect
public class MyInterceptor {

    @Pointcut(value = "execution(* *(..))")
    public void anyMethod() {
       // Pointcut for intercepting ANY method.
    }

    @Around("anyMethod() && @annotation(myAnnotation)")
    public Object invoke(final ProceedingJoinPoint pjp, final MyAnnotation myAnnotation) throws Throwable {
        //does some stuff
        ...
    }
}

如果其他人发现了什么不同的东西,请随时张贴!

致以敬意,

卢卡斯

票数 2
EN

Stack Overflow用户

发布于 2017-03-19 14:11:07

可以通过注册Advisor bean来调用MethodInterceptor,如下所示。

代码语言:javascript
运行
复制
@Configurable
@ComponentScan("com.package.to.scan")
public class AopAllianceApplicationContext {    

    @Bean
    public Advisor advisor() {
       AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();    
       pointcut.setExpression("@annotation(com.package.annotation.MyAnnotation)");
       return new DefaultPointcutAdvisor(pointcut, new MyInterceptor());
    }

}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13862216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档