解决方案 »

  1.   

    我能想到好像也是判断。在AOP监控执行前,每次判断如配置文件配置值(enable=true),在决定是否执行AOP的监控代码
      

  2.   

    编译阶段
    可以利用maven的profile来改变aop作用范围运行阶段的话,
    可以动态改变PointCut来进行决定是否进行通知下面是例子可以参考package DynamicPointCutAdvisor;import java.lang.reflect.Method;import org.springframework.aop.ClassFilter;
    import org.springframework.aop.support.DynamicMethodMatcherPointcut;public class SimpleDynamicPointcut extends DynamicMethodMatcherPointcut {
       //  这边可以判断一个全局变量的boolean值来确定是否aop
      // 如果需要禁用,只需要改变全局变量
        public boolean matches(Method method, Class cls) {
            return "dynamic".equals(method.getName());
        }
        
        public ClassFilter getClassFilter(){
            return new ClassFilter(){
                public boolean matches(Class cls){
                    return cls==BeanOne.class;
                }
            };
        }
    }
    以上是思路。