参考地址:http://www.cnblogs.com/parryyang/p/5881523.html
1、基于AspectJ注解
Maven引入依赖包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.1</version> </dependency>
2、在spring配置文件中添加aop的命名空间,同时配置使得项目支持Aop,配置如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!--使Spring支持自动检测组件,如注解的Controller --> <context:component-scan base-package="com.parry.redisCluster.*" /> <!--*************** 支持aop **************** --> <aop:aspectj-autoproxy proxy-target-class="true" /> </beans>
3、拦截代码
package com.wanrong.distribution; import java.util.Arrays; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; @Aspect @Component public class UserTokenInterceptor { // com.wanrong.distribution.server.impl 包的子包里面任何方法 @Pointcut("execution(public * com.wanrong.distribution.server.impl.*.*(..))") public void checkToken() { } @Before("checkToken()") public void beforeCheckToken() { System.out.println("调用方法之前。。。。"); } @AfterReturning("checkToken()") public void afterCheckToken() { System.out.println("调用方法结束之后。。。。"); } @Around(value="checkToken()") public Object aroundMethod(ProceedingJoinPoint point){ Object result = null; String methodName = point.getSignature().getName(); try { //前置通知 System.out.println("The method "+ methodName+" start. param<"+ Arrays.asList(point.getArgs())+">"); //执行目标方法 result = point.proceed(); //返回通知 System.out.println("The method "+ methodName+" end. result<"+ result+">"); } catch (Throwable e) { //异常通知 System.out.println("this method "+methodName+" end.ex message<"+e+">"); throw new RuntimeException(e); } //后置通知 System.out.println("The method "+ methodName+" end."); return result; } // 抛出异常时才调用 @AfterThrowing("checkToken()") public void afterThrowing() { System.out.println("校验token出现异常了......"); } }
相关推荐
在Spring MVC中,AOP(面向切面编程)是一种强大的工具,可以让我们在不修改代码的情况下,对程序的特定部分进行增强,例如日志记录、事务管理或性能监控。在这个场景中,我们将讨论如何利用AOP来实现Controller的...
本项目“Spring+SpringMvc+MybatisPlus+Aop(自定义注解)动态切换数据源”正是针对这一需求提供的一种解决方案。下面将详细介绍这个项目中的关键技术点和实现原理。 首先,Spring框架是Java企业级应用开发的核心...
AOP(面向切面编程)则是Spring框架的一个重要特性,允许我们在不修改原有业务逻辑的情况下,插入额外的功能,比如日志记录。在这个例子中,我们将讨论如何将Log4j与Spring MVC和AOP结合,实现方法调用前后的日志...
spring mvc aop <context:annotation-config />
本压缩包文件主要涵盖了Spring框架的核心部分——Spring MVC和AOP(面向切面编程)的详细知识,对于想要深入理解和运用Spring框架的开发者来说,是一份非常宝贵的资源。 首先,我们来看看《Spring3.20权威开发指南...
1、spring切入点 2、spring前置织入,传入参数处理 3、spring后置织入,传入参数处理 4、环绕织入,参数及返回值处理 5、返回后织入,返回值处理 6、异常织入,异常处理 maven环境下,测试用例可直接运行
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,通过插入额外的代码(称为切面)来增强应用程序功能的方式。在Spring MVC框架中,AOP通常用于实现日志记录、事务管理...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、性能监控等,并将它们模块化为可重用的组件,称为切面。本实例主要探讨如何在Spring AOP中实现拦截器。 ...
在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志管理、事务控制等。本项目"Spring MVC AOP通过注解方式拦截Controller等实现日志管理demo版本2"是基于注解的AOP实践,...
使用aop进行多数据源切换 springMVC+spring+mybatis增删改查的使用。dk8+tomcat8+mysql+Eclipse+maven。spring+spring mvc+mybatis+bootstrap+jquery
SpringMVC-Aop demo是一个关于如何在SpringMVC框架中集成和使用AOP(面向切面编程)的示例项目。这个项目旨在帮助开发者理解如何通过注解来配置和实现AOP,以便进行日志记录、事务管理或其他跨功能的需求。下面我们...
springMVC mybatis aop 非注解 基于配置 mysql数据库 还包括了AOP的例子 可以对日志集中操作 还有整个项目的异常操作 都是AOP实现非侵入代码 整个dmeo没有注解(除了override)都是基于配置的 包括数据库建库脚本 ...
本文抛砖引玉,并没有详细的介绍更全面的内容,通过一个例子让初次使用的人能够快速入门,简单的介绍一下。 第一,注解: @Before – 目标
在IT行业中,SpringMVC和AOP(面向切面编程)是两个非常重要的概念,尤其在企业级应用开发中广泛使用。SpringMVC是Spring框架的一部分,主要用于构建Web应用程序的模型-视图-控制器(MVC)架构。而AOP则是Spring框架...
Spring AOP实现原理解析 Spring AOP(Aspect-Oriented Programming)是一种面向方面编程的技术,它可以将公共行为封装到一个可重用模块中,以减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可...
基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...
- SpringMVC:包含了一个简单的Spring MVC应用示例,可能包括了web.xml配置、DispatcherServlet配置、Controller类、视图解析器配置以及相应的HTML视图。你可以通过这个例子学习如何设置Spring MVC项目,以及如何...
SpringMVC用XML方式实现AOP的方法示例 本文主要介绍了SpringMVC用XML方式实现AOP的方法示例,通过示例代码详细地介绍了如何使用XML方式来实现AOP。AOP(Aspect-Oriented Programming)是一种编程范式,它可以将横切...
Spring AOP + SpringMVC +Mybatis做动态数据源,实现读写分离Spring AOP + SpringMVC +Mybatis做动态数据源,实现读写分离Spring AOP + SpringMVC +Mybatis做动态数据源,实现读写分离