V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tctc4869
V2EX  ›  Java

Java 有哪些基于对象的 Aop 拦截工具?

  •  
  •   tctc4869 · 2020-06-30 14:54:27 +08:00 · 1768 次点击
    这是一个创建于 1367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    webMVc 和持久层调用中,都会有拦截器功能,一个对象,最终要调用的某个方法,但之前要会被很多拦截器拦截。有没有专门做这种基于对象的 aop 拦截的工具类呢?

    那种把扫描一个包,一个类,为每个方法都注入 aop 切面的 aop,这个 aop 功能太高级了,操作比较复杂。

    我需要的是专门用于拦截对象的 aop 工具,类似 Web 拦截器那种,例如 Spring MVC 里的拦截器,的目就是拦截 HttPServletRequest 对象。根据开发者定制的流程配置决定是否放行,进入下一个 web 组件(下一个拦截器或最终的请求处理方法)

    我想为我编写的小框架的某个流程处理,为某个类型的对象,增加拦截器功能。调用拦截器处理方法,在方法代码内根据开发者编码配置决定是否放行,或阻止下一步前进。有专门做这个的 aop 拦截组件么,比较好用的是哪个?

    imzhoukunqiang
        1
    imzhoukunqiang  
       2020-06-30 16:07:01 +08:00
    我感觉你想要动态代理?甚至静态代理就行了?
    tctc4869
        2
    tctc4869  
    OP
       2020-06-30 17:45:00 +08:00
    @imzhoukunqiang 想要的是类似 Spring mvc 的拦截功能,就拦截对象就行,但是拦截对象,我自己去定义,但是 Spring MVC 那个方式我可以模仿一个出来,但是感觉不太好用,因为用的是拦截三个方法控制拦截流程,如果能在一个方法里完成拦截流程(调用 Invoke 进入下一个拦截器或拦截结束)控制就好了。
    tctc4869
        3
    tctc4869  
    OP
       2020-06-30 19:14:49 +08:00
    @imzhoukunqiang 想到 asp.net,我才发现我的拦截器设计策略应该是有问题的,我觉得应该像 asp.net 的过滤器一样,把拦截器分成几个类,而不是像 Spring MVC 一样,把异常,前置拦截,后置等,都堆在一个类里
    Kaiv2
        4
    Kaiv2  
       2020-06-30 19:29:22 +08:00 via Android
    看下 spring 的 aop 吧,符合你的需求
    hand515
        5
    hand515  
       2020-06-30 19:43:15 +08:00 via Android
    看得我好费劲。。。。
    spring aop
    aspectj
    动态代理
    以上三个关键字搜,能找到一堆满足你的需求的文章
    xuanbg
        6
    xuanbg  
       2020-07-01 04:15:43 +08:00
    看了半天也没明白楼主在说啥。。。拦截对象的意思是一旦实例化某个特定类型就先拦截,然后在拦截器里面处理完了再实例化?那不如这个类型的构造函数里面处理这个逻辑好了。还是类型已经实例化,但在调用对象方法时候进行拦截?这种策略模式就解决了,要什么 aop 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   953 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:17 · PVG 05:17 · LAX 14:17 · JFK 17:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.