SpringBoot使用AOP
时间:2021-09-06
本文章向大家介绍SpringBoot使用AOP,主要包括SpringBoot使用AOP使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目要求
实现例子
创建好boot项目导入aop依赖
<!--导入AOP-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
编写好变形金刚实现类
package com.jie.service;
import org.springframework.stereotype.Service;
@Service
public class TransformersImpl implements Transformers {
@Override
public void attack() {
System.out.println("进行攻击");
}
@Override
public void errorTest() {
int i=1/0;
}
@Override
public String aroundTest() {
System.out.println("方法正常运行");
return "hello";
}
}
编写Aspect类
package com.jie.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class TransformersAspect {
//匹配com.jie.pojo包及其子包下的所有类的所有方法
@Pointcut("execution(* com.jie.service.TransformersImpl.attack(..))")
public void pointCut(){
}
@Before("pointCut()")
public void beforeAdvice(JoinPoint joinPoint){
System.out.println("前置方法执行---");
System.out.println("准备挥拳");
}
@After("pointCut()")
public void afterAdvice(JoinPoint joinPoint){
System.out.println("后置方法执行---");
System.out.println("攻击结束");
}
@AfterThrowing(value = "execution(* com.jie.service.TransformersImpl.errorTest(..))", throwing = "e")
public void afterThrowingAdvice(JoinPoint joinPoint,Exception e){
System.out.println("出现异常");
System.out.println(e.getMessage());
}
@Around("execution(* com.jie.service.TransformersImpl.aroundTest(..))")
public Object aroundAdvice(ProceedingJoinPoint proceedingJoinPoint){
System.out.println("环绕前置通知---");
System.out.println("环绕通知的目标方法名:"+proceedingJoinPoint.getSignature().getName());
try{
//执行方法
Object proceed = proceedingJoinPoint.proceed();
return proceed;
}
catch (Throwable throwable) {
throwable.printStackTrace();
}
finally {
System.out.println("环绕后置通知");
}
return null;
}
}
注意要使用@Aspect
注解
之后就可以愉快的使用了
@SpringBootTest
class Day08AopmybatisApplicationTests {
@Autowired
TransformersImpl transformers;
@Test
void contextLoads() {
transformers.attack();
}
@Test
void test2(){
transformers.errorTest();
}
@Test
void test3(){
System.out.println(transformers.aroundTest());
}
}
原文地址:https://www.cnblogs.com/OfflineBoy/p/15235488.html
- 细说ReactiveCocoa的冷信号与热信号系列(1)
- 【美团技术团队博客】前端组件化开发实践
- Spring中Bean
- 跟Google学写代码--Chromium/base--windows_version源码学习及应用
- 一步步教你弹性框架-下篇
- R语言与机器学习(分类算法)朴素贝叶斯算法
- 【美团技术团队博客】RACSignal的Subscription深入分析
- 谈谈个人网站的建立(八)—— 缓存的使用
- 【编程基础】System.arraycopy()和 Arrays.copyOf()
- 移动端 模拟手机联系人触摸A~Z导航
- 谈谈个人网站的建立(七)—— 那些建站必备的插件
- 【美团技术团队博客】Linux资源管理之cgroups简介
- 谈谈个人网站的建立(六)—— 数据库同步
- Javascript解析机制 执行机制
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 猿实战06——不一样的地址管理
- Redis常用命令详解
- three.js 制作逻辑转体游戏(下)
- ROS机器人TF基础(坐标相关概念和实践)
- (在模仿中精进数据可视化01) 全国38城居住自由指数可视化
- js字符串/数组常用方法总结
- ThinkPHP5+mpdf 实现富文本生成 PDF文件
- nodejs使用readline逐行读取和写入文件
- go语言逐行读取和写入文件
- SpringBoot中Tomcat是如何启动的
- 自定义注解详解及应用
- 微服务开源框架TARS 之 框架服务解析
- dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用
- K8s集群上使用Helm部署2.4.6版本Rancher集群
- VMware下安装CentOS