zoukankan      html  css  js  c++  java
  • 一次spring aop 切面的问题

      最新项目有个新需求,要在已经写好的controller里面 加上传入参数的验证,由于有多个 controller而且验证每个都要调用其他的服务,故决定采用spring的aop方式。

            1.添加aop的验证

            

    @Component
    @Aspect
    public class VerifyCircle {
    
        private Logger logger = LoggerFactory.getLogger(this.getClass());
        public static final String shequnHost=SystemProperties.getInstance().getProperty("community.rpc.url");
    
        @Pointcut("execution(* cn.zm518.vip.action.ProductController.rmberTypeDetail(..))")
        public void pointCut(){
    
        }
    
        @Before("pointCut()")
        public void verifyCircle(JoinPoint joinPoint){
    
            System.out.println(joinPoint.getSignature().getName() + "传的参数是:{" + Arrays.asList(joinPoint.getArgs())+"}");
    
            String circleId = "";
    
            if (StringUtils.isBlank(circleId)){
    
              logger.info("circleId 为空!!!");
    
            }
            CircleClient circleClient = CircleClient.getInstance(shequnHost);
    
    
    
        }
    
        /*@After("")
        public void finish(){
    
        }*/
    
       /* @AfterThrowing(value = "pointCut()",throwing = "ex")
        public void verifyException(Exception ex){
            logger.debug("检查异常.... 异常信息是:{" + ex + "}");
        }*/
    }

    2.配置文件

       注意要在spring-mvc的xml文件里面添加,而不是applicationContext.xml文件添加。网上查找原因说是,applicationContext.xml被spring的ContextLoaderListenerClass加载为WebApplicationContext,此为一个父上下文,而加载spring-mvc是Dispatch-servlet,

    此为一个子上下文。如果配置在applicationContext.xml,相当于在父上下文中配置,父上下文无法访问子上下文。

      

    <!--开启aop注解 -->
        <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

    3.启动tomcat 验证。。。 结果不行。

      自己原因主要是:

      

     @Pointcut("execution(* cn.zm518.vip.action.ProductController.rmberTypeDetail(..))")  ,一个自己配置某个方法时候,写成了public void cn.zm518.vip.action.ProductController.rmberTypeDetail() ,但是自己的controller里面是返回的ModelAndView视图
    ,第二个问题是 自己的方法带有参数,但自己写的是无参数的。所以一直不行。。。

  • 相关阅读:
    LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    C语言控制台窗体图形界面编程(总结)
    linux下c程序 daemon、fork与创建pthread的顺序问题
    内存动态分配与释放
    MyReport报表系统v1.2公布
    AutoLayout初战----Masonry与FDTemplateLayoutCell实践
    算法与数据结构题目的 PHP 实现:栈和队列 设计一个有 getMin 功能的栈
    药店从业者,不能不知的数据分析方法
    药店从业者,不能不知的数据分析方法
    SAS之大话PDV
  • 原文地址:https://www.cnblogs.com/thinkingandworkinghard/p/9360176.html
Copyright © 2011-2022 走看看