文档章节

aspectjrt 面向切面,拦截返回值,并修改返回值

LikesWinds
 LikesWinds
发布于 2016/03/10 00:47
字数 224
阅读 432
收藏 1

maven依赖

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>1.6.12</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.6.12</version>
</dependency>
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.2</version>
</dependency>

aop代码

package com.aop; 
import org.springframework.aop.framework.AopInfrastructureBean;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.ui.ModelMap;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
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;
  
@Repository
@Component
@Aspect
public class Aop implements AopInfrastructureBean {
	 
	@Pointcut("execution(* com.spring..*.do*(..)) ")
	public void pointCut() {
	} 
	@Around("pointCut()")
	public Object Around(ProceedingJoinPoint pjp)  { 
		ModelMap map ;
		try {
			//获取原始返回值 
			 map = (ModelMap) pjp.proceed();    
			 map.put("states", true);  
		} catch (Throwable ex) {
			map =new ModelMap();
			map.put("err", ex.getMessage()); 
		} 
		return  map;
	} 
}

切入点

public ModelMap  doAdd() {
	ModelMap map=new ModelMap()ring;
	map.addAttribute("value", "某个对象");
	return map;
}
 

public ModelMap doDel() throws Exception {
	ModelMap map=new ModelMap();
	if(true){
		throw new Exception("錯誤的參數");
	} 
	return map;
}

测试代码

ModelMap map=user.doAdd();   
System.out.println("最终返回"+map);
ModelMap map2=user.doDel();   
System.out.println("最终返回"+map2);

测试结果

最终返回{value=某个对象, states=true}

最终返回{err=错误的参数}


© 著作权归作者所有

LikesWinds
粉丝 1
博文 4
码字总数 1805
作品 0
西安
私信 提问
spring aop , tx

一 .面向切面编程(AOP)的基础概念: 以一个普通的java方法来举例 a. 横切关注点:如上面5个通知的位置,在java对象中,可以这些具有类似共同处理逻辑的位置加入如权限验证、事物处理、日志记...

SKYCOBS
2016/08/18
13
0
HTFramework框架使用手册(一) AspectTrack面向切面的动态调试模块

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq992817263/article/details/85617377 索引 AspectTrack模块简介 使用AspectTrack AspectTrack模块简介 Aspe...

神码编程
01/02
0
0
SpringBoot 整合 AOP

版权声明:本文版权归Jitwxs所有,欢迎转载,但未经作者同意必须保留原文链接。 https://blog.csdn.net/yuanlaijike/article/details/84863288 一、前言 AOP(Aspect Oriented Programming, ...

Jitwxs
2018/12/06
0
0
Spring Aspect Oriented Programming

本文是一篇Spring AOP的基础知识分析文章,其中不牵扯源码分析,只包含AOP中重要概念的讲解,分析,以及Spring AOP的用法。 Spring 从2.0版本引入了更加简单却强大的基于xml和AspectJ注解的面...

麦壳原野
2015/04/02
0
3
Spring学习篇:AOP知识整理

AOP知识整理 AOP(Aspect-Oriented Programming):面向切面的编程。OOP(Object-Oriented Programming)面向对象的编程。对于OOP我们已经再熟悉不过了,对于AOP,可能我们会觉得是一种新特性,其...

MLGKO
2015/11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作。SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与Nodejs的 Dock...

巨杉数据库
4分钟前
1
0
文库免费下载?vip视频免费看?查询网页快照?这一切只需要三个字符

发现了一个神奇的技巧,只需要在地址栏输入:3串神器的字符(两三个字母),就会有神奇的事情发生! 01:“vvv”,文库免费下载 大家可以在龙喵网:软件资源导航 里面“在线工具-文库资料下载...

元歌
14分钟前
1
0
远程拷贝命令scp

命令scp 用途: secure copy,利用ssl安全复制(远程文件复制程序) 语法: ]# scp [选项] [用户名@ip]源文件 [用户@ip]目标文件 选项: -P port 指定远程主机的ssh端口 ...

迷失De挣扎
今天
4
0
总结使用tslint的一些代码规范

1.冒号后面,逗号后面要有空格,还有一般if语句大括号前面后面也都要有空格 2.使用for (let i = 0; i < arr.length; i++) {}循环数组报错,使用for (const i of arr) {} for (const i of arr...

大换子
今天
2
0
虚函数

虚函数作用: 基类中可以调用继承类中的函数。(相当于就是允许子类覆盖父类中的函数)

colin_86
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部