java吧 关注:1,221,742贴子:12,675,496
  • 7回复贴,共1

java中的静态方法能否进行切面编程?

取消只看楼主收藏回复

如题,静态方法!静态方法!静态方法!重要的事情说三遍!之前在百度知道也提了问但是没有结果。
经测试,目前得知:“普通方法”可以使用AspectJ 或者spring-aop进行代理增强;“静态方法”可以使用java反射模拟实现切面编程。利用java反射机制,在Method的invoke()前后进行拦截处理即可。
然而使用java的反射机制,只能“主动”进行拦截处理,因为无法设置切入点监听静态方法执行,必须主动调用指定的静态方法,无法像spring-aop一样,只要方法被调用,可以被监听到,“被动”地进行拦截处理。
现在还需要研究一下是否能实现与spring-aop类似的功能,利用注解等形式在静态方法被调用时触发拦截。
或者有没有什么办法可以监控java任意或指定静态函数的调用?类似于添加Listener,只要指定静态函数被调用,即可被监听到?


IP属地:云南1楼2022-07-21 09:56回复
    java反射invoke()代码示例为(直接放代码老说违规):





    IP属地:云南2楼2022-07-21 10:01
    回复


      IP属地:云南3楼2022-07-21 10:04
      收起回复


        IP属地:云南7楼2022-07-21 17:54
        回复
          太难了


          IP属地:云南8楼2022-07-22 09:44
          回复


            IP属地:云南12楼2022-08-10 11:24
            回复
              痛苦


              IP属地:云南来自iPhone客户端18楼2022-08-10 15:47
              回复
                其实就是在一个类的doService()方法里直接调用


                IP属地:云南19楼2022-08-10 15:51
                收起回复