`

springMVC Aop

阅读更多

   参考地址: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出现异常了......");
    }
}

 

分享到:
评论

相关推荐

    springMVC AOP拦截拦截Controller等实现日志管理

    在Spring MVC中,AOP(面向切面编程)是一种强大的工具,可以让我们在不修改代码的情况下,对程序的特定部分进行增强,例如日志记录、事务管理或性能监控。在这个场景中,我们将讨论如何利用AOP来实现Controller的...

    Spring+SpringMvc+MybatisPlus+Aop(自定义注解)动态切换数据源

    本项目“Spring+SpringMvc+MybatisPlus+Aop(自定义注解)动态切换数据源”正是针对这一需求提供的一种解决方案。下面将详细介绍这个项目中的关键技术点和实现原理。 首先,Spring框架是Java企业级应用开发的核心...

    springmvc中使用log4j及aop记录日志的例子

    AOP(面向切面编程)则是Spring框架的一个重要特性,允许我们在不修改原有业务逻辑的情况下,插入额外的功能,比如日志记录。在这个例子中,我们将讨论如何将Log4j与Spring MVC和AOP结合,实现方法调用前后的日志...

    spring mvc aop

    spring mvc aop &lt;context:annotation-config /&gt;

    spring-springMVC开发文档和AOP详解

    本压缩包文件主要涵盖了Spring框架的核心部分——Spring MVC和AOP(面向切面编程)的详细知识,对于想要深入理解和运用Spring框架的开发者来说,是一份非常宝贵的资源。 首先,我们来看看《Spring3.20权威开发指南...

    spring aop demo

    1、spring切入点 2、spring前置织入,传入参数处理 3、spring后置织入,传入参数处理 4、环绕织入,参数及返回值处理 5、返回后织入,返回值处理 6、异常织入,异常处理 maven环境下,测试用例可直接运行

    基于注解配置和使用spring AOP(spring mvc框架)

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,通过插入额外的代码(称为切面)来增强应用程序功能的方式。在Spring MVC框架中,AOP通常用于实现日志记录、事务管理...

    spring_aop_拦截实例

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、性能监控等,并将它们模块化为可重用的组件,称为切面。本实例主要探讨如何在Spring AOP中实现拦截器。 ...

    Spring MVC AOP通过注解方式拦截Controller等实现日志管理demo版本2

    在Spring MVC框架中,AOP(面向切面编程)是一种强大的工具,用于实现跨切面的关注点,如日志管理、事务控制等。本项目"Spring MVC AOP通过注解方式拦截Controller等实现日志管理demo版本2"是基于注解的AOP实践,...

    使用aop进行多数据源切换 springMVC+spring+mybatis增删改查的使用

    使用aop进行多数据源切换 springMVC+spring+mybatis增删改查的使用。dk8+tomcat8+mysql+Eclipse+maven。spring+spring mvc+mybatis+bootstrap+jquery

    SpringMVC-Aop demo

    SpringMVC-Aop demo是一个关于如何在SpringMVC框架中集成和使用AOP(面向切面编程)的示例项目。这个项目旨在帮助开发者理解如何通过注解来配置和实现AOP,以便进行日志记录、事务管理或其他跨功能的需求。下面我们...

    springMVC mybatis aop mysql 非注解 基于配置

    springMVC mybatis aop 非注解 基于配置 mysql数据库 还包括了AOP的例子 可以对日志集中操作 还有整个项目的异常操作 都是AOP实现非侵入代码 整个dmeo没有注解(除了override)都是基于配置的 包括数据库建库脚本 ...

    SpringMVC利用AOP实现自定义注解记录日志

    本文抛砖引玉,并没有详细的介绍更全面的内容,通过一个例子让初次使用的人能够快速入门,简单的介绍一下。 第一,注解: @Before – 目标

    简单的SpringMVC加注解AOP,改变传进的值

    在IT行业中,SpringMVC和AOP(面向切面编程)是两个非常重要的概念,尤其在企业级应用开发中广泛使用。SpringMVC是Spring框架的一部分,主要用于构建Web应用程序的模型-视图-控制器(MVC)架构。而AOP则是Spring框架...

    Spring AOP实现原理解析

    Spring AOP实现原理解析 Spring AOP(Aspect-Oriented Programming)是一种面向方面编程的技术,它可以将公共行为封装到一个可重用模块中,以减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可...

    基于springmvc实现文件上传下载 基于AOP的日志功能

    基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...

    Spring IOC AOP MVC 简单例子

    - SpringMVC:包含了一个简单的Spring MVC应用示例,可能包括了web.xml配置、DispatcherServlet配置、Controller类、视图解析器配置以及相应的HTML视图。你可以通过这个例子学习如何设置Spring MVC项目,以及如何...

    SpringMVC用XML方式实现AOP的方法示例

    SpringMVC用XML方式实现AOP的方法示例 本文主要介绍了SpringMVC用XML方式实现AOP的方法示例,通过示例代码详细地介绍了如何使用XML方式来实现AOP。AOP(Aspect-Oriented Programming)是一种编程范式,它可以将横切...

    Spring AOP + SpringMVC +Mybatis做动态数据源,实现读写分离

    Spring AOP + SpringMVC +Mybatis做动态数据源,实现读写分离Spring AOP + SpringMVC +Mybatis做动态数据源,实现读写分离Spring AOP + SpringMVC +Mybatis做动态数据源,实现读写分离

Global site tag (gtag.js) - Google Analytics