springboot使用aspectJ
添加springboot-aop的starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
编写切面代码(先执行环绕方法->方法前->方法后->方法返回后,开启环绕方法时,异常方法无效)
@Aspect
@Component
public class AspectService {
//coder.rdf.mybatis.study.service包下的所有类的所有方法
@Before(value="execution(* coder.rdf.mybatis.study.service.*.*(..))")
public void before(JoinPoint joinPoint) throws Throwable {
Object[] args = joinPoint.getArgs();
String name = joinPoint.getSignature().getName();
System.out.println("方法前****切面方法**"+name+"***"+ Arrays.toString(args));
}
@After(value="execution(* coder.rdf.mybatis.study.service.*.*(..))")
public void after(JoinPoint joinPoint){
Object[] args = joinPoint.getArgs();
String name = joinPoint.getSignature().getName();
System.out.println("方法后****切面方法**"+name+"***"+ Arrays.toString(args));
}
@AfterReturning(value="execution(* coder.rdf.mybatis.study.service.*.*(..))" ,returning = "result")
public void afterRunning(JoinPoint joinPoint,Object result){
Object[] args = joinPoint.getArgs();
String name = joinPoint.getSignature().getName();
System.out.println("方法反回后****切面方法**"+name+"***"+ Arrays.toString(args)+"***"+result);
}
@Around(value="execution(* coder.rdf.mybatis.study.service.*.*(..))")
public Object rounding(ProceedingJoinPoint joinPoint) throws Throwable {
long start = Time.now();
System.out.println("环绕方法开始****");
Object proceed = null;
try {
Object[] args = joinPoint.getArgs();
proceed = joinPoint.proceed(args);
} catch (Throwable throwable) {
throw new Throwable("方法调用失败");
}
System.out.println("环绕方法结束****");
long end = Time.now();
System.out.println("****方法执行时间**"+(start-end));
return proceed;
}
@AfterThrowing(value = "execution (* coder.rdf.mybatis.study.service.*.*(..))", throwing = "e")
public void throwException(JoinPoint joinPoint, Exception e) {
String methodName = joinPoint.getSignature().getName();
System.out.println("异常方法调用:" + methodName + " 异常信息" + e);
}
}
springboot使用aspectJ的更多相关文章
- 梳理一下我理解的aop
在看了很多网上的资料和记录之后,我大概捋了下SpringAOP的各种阶段: 基本的advice编程,利用ProxyFactory拿代理类 利用spring把ProxyFactory,advice等be ...
- aop详解与实战
1. 什么是AOP aop:面向切面编程.采用横向机制. oop:面向对象编程.采用纵向机制. AOP,面向切面编程.就是通过某个切入点(比如方法开始.结束)向某个切面(被切的对象)切入环绕通知(需要 ...
- java注解@Transactional事务类内调用不生效问题及解决办法
@Transactional 内部调用例子 在 Spring 的 AOP 代理下,只有目标方法由外部调用,目标方法才由 Spring 生成的代理对象来管理,这会造成自调用问题.若同一类中的其他没有@T ...
- SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean
SpringBoot下使用AspectJ(CTW)下不能注入SpringIOC容器中的Bean 在SpringBoot中开发AspectJ时,使用CTW的方式来织入代码,由于采用这种形式,切面Bean ...
- SpringBoot实例
7player 7号球员 -- Show Time !跳至内容 首发 左边锋 技术流 外援 教练 7号 基于SpringBoot + Mybatis实现SpringMVC Web项目[原创] 目录 [ ...
- 第九章 springboot + mybatis + 多数据源 (AOP实现)
在第八章 springboot + mybatis + 多数据源代码的基础上,做两点修改 1.ShopDao package com.xxx.firstboot.dao; import org.spr ...
- 【spring-boot】spring aop 面向切面编程初接触--切点表达式
众所周知,spring最核心的两个功能是aop和ioc,即面向切面,控制反转.这里我们探讨一下如何使用spring aop. 1.何为aop aop全称Aspect Oriented Programm ...
- Springboot基础篇
Springboot可以说是当前最火的java框架了,非常适合于"微服务"思路的开发,大幅缩短软件开发周期. 概念 过去Spring充满了配置bean的xml文件,随着spring ...
- SpringBoot 注解事务声明式事务
转载请注明: http://www.cnblogs.com/guozp/articles/7446477.html springboot 对新人来说可能上手比springmvc要快,但是对于各位从sp ...
随机推荐
- Nginx配置https以及配置说明
示例 worker_processes 1; events { worker_connections 1024; } http { #均衡负载 upstream demo{ server localh ...
- C#(二)基础篇—操作符
2020-12-02 本随笔为个人复习巩固知识用,多从书上总结与理解得来,如有错误麻烦指正 1.数学操作符 int a=2,b=3,c=0; float d=0; c=a+b; //c=5 c++; ...
- day3(Vue组件)
1.组件定义 1.定义组件并引用 2.父组件向子组件传值 3.子组件向父组件传值 # 组件间传值:vuex (https://www.cnblogs.com/xiaonq/p/9697921.html ...
- HTML5 速览
HTML5 速览 一. HTML5 元素分类 HTML赋值文档内容的结构和含义, 内容呈现由css样式控制 元素选用原则 少亦可为多 标记只应该应内容对语义的需要使用. 有条经验法则是: 问问自己打算 ...
- Python+Qt学习随笔:PyQt中常用的事件处理函数
在PyQt图形界面中,我们经常要捕获特定事件如鼠标按键按下.鼠标按下等事件以执行特定操作,可以通过重写组件对象的相关事件处理函数来实现相关处理,具体特定事件常用的包括如下: keyPressEvent ...
- CNVD漏洞证书(2)
第二张CNVD的原创漏洞证书. 关于证书申请可以看我之前写的这篇博客: https://www.cnblogs.com/Cl0ud/p/12720413.html 继续加油
- nginx优化-转载
(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...
- Git:git常用命令
1.版本控制工具 一个可以管理和追踪软件代码的工具. 分类: 集中式版本控制工具:SVN 分布式版本控制工具:Git 2.Git 的概念: 工作区:就是 ...
- Linux 查看CPU型号,内存大小,硬盘空间的命令
1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 1.2 查看CPU核数 # ...
- Map、Debug追踪
Map集合 概述 现实生活中,我们常会看到这样一种集合:IP地址和主机名,身份证号和个人,系统用户名与系统用户对象等,这种一一对应的关系,我们把它称之为映射.Java当中提供了专门的集合类用来 ...