Spring怎么自定义局部变量的注解,并在aop中拦截?

自定义一个局部变量的注解:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.LOCAL_VARIABLE)
public @interface MyName {
    String ip() default "127.0.0.2";
}

想对那些标记了这个注解的变量,进行一个aop,然后做一些处理(例如输出参数所赋的值"zhangsan")

    public void test() {
        @MyName
        String name = "Zhangsan";
        System.out.println("test method");
    }

我的aop应该怎么写?

阅读 10.2k
4 个回答

这个难度挺大的吧。先不说AOP了。 获取某个方法中的临时变量, 这个能实现吗?

利用AOP+JoinPoint就可以实现,例子懒得写,百度一大堆

新手上路,请多包涵

1.定义一个拦截器实现MethodInterceptor接口

public class TestInterceptor implements MethodInterceptor {

    @Override
    public Object invoke(MethodInvocation mi) throws Throwable {
        MyName annotation = method.getAnnotation(MyName .class);
        //TO-DO 处理自己的业务逻辑
    }

}

2.在spring的配置文件中配置基于注解的aop

<bean id="myNameInterceptor" class="core.advice.myNameInterceptor" />

 <aop:config>
        <aop:advisor
                pointcut="@annotation(core.annotation.MyName)"
                advice-ref="myNameInterceptor" />
    </aop:config>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题