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

发布于 2022-09-06 09:24:22 字数 437 浏览 18 评论 0

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

@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应该怎么写?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

晨与橙与城 2022-09-13 09:24:22

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

安静被遗忘 2022-09-13 09:24:22

这应该是不可能的。
https://stackoverflow.com/que...

梦晓ヶ微光ヅ倾城 2022-09-13 09:24:22

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

梦里泪两行 2022-09-13 09:24:22

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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文