SpringMVC配置AOP

来源:互联网 发布:台湾网络信号 编辑:程序博客网 时间:2024/06/14 16:39

SpringMVC配置AOP


      java的SpringMVC中经常会用到对controller层、service层、dao层的,

   拦截监听,springMVC中的切换编程AOP就解决了该问题。


  AOP类似于监听事件,监听软件程序的动作。


   AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。

   AOP可以实现对系统的不同的功能组件,进行统一处理,例如controller层、service层、dao层,

   可以监听 controller层、service层、dao层的类和方法的执行之前、执行之后,抛出异常的事件。

 

  实现步骤:


  1.通过maven引入springmvc的AOP,

  

 <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-aop</artifactId>          <version>${spring.version}</version>      </dependency>

<!-- aop aspect注解导包-->      <dependency>          <groupId>org.aspectj</groupId>          <artifactId>aspectjrt</artifactId>          <version>1.8.6</version>      </dependency>      <dependency>          <groupId>org.aspectj</groupId>          <artifactId>aspectjweaver</artifactId>          <version>1.8.9</version>      </dependency>


  2.springmvc文件中配置aop,(一定在主springmvc中配置,否则会配置无效)


<!-- AOP 注解方式 ;定义Aspect --><!-- 激活组件扫描功能,在包com.ly.aop.aspect及其子包下面自动扫描通过注解配置的组件--><context:component-scan base-package="com.relaxPalace.web.aop.aspect"/><!-- 启动AspectJ支持   只对扫描过的bean有效--><aop:aspectj-autoproxy proxy-target-class="true" /><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />


  3.定义aop的作用范围

   SysLogAspectJ.java:

package com.relaxPalace.web.aop.aspect;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;import org.springframework.stereotype.Component;/** * Created by Administrator on 2017/7/2. */@Component@Aspectpublic class SysLogAspectJ {    //Controller aop    @Pointcut("execution(public * com.relaxPalace.web.controller.*.*(..))")    public void checkToken(){    }    @Before("checkToken()")    public void beforeCheckToken(){        System.out.println("调用方法之前。。。。");    }    @AfterReturning("checkToken()")    public void afterCheckToken(){        System.out.println("调用方法结束之后。。。。");    }    //抛出异常时才调用    @AfterThrowing("checkToken()")    public void afterThrowing()    {        System.out.println("校验token出现异常了......");    }    //dao aop    @Pointcut("execution(public * com.relaxPalace.web.dao.*.*(..))")    public void dao(){    }    @Before("dao()")    public void beforeDao(){        System.out.println("调用dao方法之前。。。。");    }    @AfterReturning("dao()")    public void afterDao(){        System.out.println("调用dao方法结束之后。。。。");    }    //抛出异常时才调用    @AfterThrowing("dao()")    public void afterDaoThrowing()    {        System.out.println("校验dao出现异常了......");    }}


  

     配置完毕后在执行controller和dao的方法会执行相应的逻辑操作。




       

原创粉丝点击