SpringMVC配置AOP

本文介绍了在SpringMVC中如何配置和使用AOP进行拦截监听,以实现对controller、service和dao层的统一处理。AOP作为面向对象编程的补充,能够方便地对不同组件执行前后及异常事件进行监听。配置步骤包括引入AOP依赖,配置springmvc文件,并定义AOP的作用范围。通过SysLogAspectJ.java类,可以在执行相关方法时触发预定义的逻辑操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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" />

	<bean
			class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
	<bean
			class="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
@Aspect
public 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的方法会执行相应的逻辑操作。




       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值