十五 Spring的AOP的注解的通知类型,切入点的注解
Spring的注解的AOP的通知类型
- @Before:前置通知
- @AfterReturning:后置通知
- @Around:环绕通知
- @AfterThrowing:异常抛出通知
- @After:最终通知
- @Pointcut:切入点的注解
/**
* 切面类:注解的切面类
*/
@Aspect
public class MyAspectAnno {
//前置通知
@Before(value="execution(* com.itheima.spring.demo1.OrderDao.save(..) )")
public void before(){
System.out.println("前置通知======");
}
//后置通知
@AfterReturning(value="execution(* com.itheima.spring.demo1.OrderDao.delete(..))", returning="result")
public void afterReturning(Object result){
System.out.println("后置通知====="+result);
}
@Around(value="execution(* com.itheima.spring.demo1.OrderDao.update(..))")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable{
System.out.println("环绕前增强=====");
Object obj = joinPoint.proceed();
System.out.println("环绕后增强=====");
return obj;
}
//异常抛出通知
@AfterThrowing(value="execution(* com.itheima.spring.demo1.OrderDao.find(..))" , throwing="e")
public void find(Throwable e ){
System.out.println("异常抛出通知======"+e.getMessage());
}
//最终通知:
@After(value="execution(* com.itheima.spring.demo1.OrderDao.find(..))")
public void after( ){
System.out.println("最终通知======");
}
}
切入点的注解:
配置@Pointcut注解,使用类名.方法
/**
* 切面类:注解的切面类
*/
@Aspect
public class MyAspectAnno {
//切入点的注解
@Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.find(..))")
private void pointcut1(){} @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.save(..))")
private void pointcut2(){} @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.update(..))")
private void pointcut3(){} @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.delete(..))")
private void pointcut4(){} //前置通知
@Before(value="MyAspectAnno.pointcut2()")
public void before(){
System.out.println("前置通知======");
}
//后置通知
@AfterReturning(value="MyAspectAnno.pointcut4()", returning="result")
public void afterReturning(Object result){
System.out.println("后置通知====="+result);
}
//环绕通知
@Around(value="MyAspectAnno.pointcut3()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable{
System.out.println("环绕前增强=====");
Object obj = joinPoint.proceed();
System.out.println("环绕后增强=====");
return obj;
}
//异常抛出通知
@AfterThrowing(value="MyAspectAnno.pointcut1()" , throwing="e")
public void find(Throwable e ){
System.out.println("异常抛出通知======"+e.getMessage());
} // 最终通知:
@After(value="MyAspectAnno.pointcut1()")
public void after( ){
System.out.println("最终通知======");
} }
十五 Spring的AOP的注解的通知类型,切入点的注解的更多相关文章
- 十四 Spring的AOP的基于AspectJ的注解开发
Spring的AOP的基于AspectJ的注解开发 创建项目,引入jar包 编写目标类.切面类 配置目标类.切面类 在注解文件里开启AOP的开发 <?xml version="1.0& ...
- Spring学习十五----------Spring AOP API的Pointcut、advice及 ProxyFactoryBean相关内容
© 版权声明:本文为博主原创文章,转载请注明出处 实例: 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4. ...
- Spring 梳理 - AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)
Spring AOP那些学术概念—通知.增强处理连接点(JoinPoint)切面(Aspect) 1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是 ...
- Spring学习(十五)----- Spring AOP通知实例 – Advice
Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点.简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后 ...
- spring boot(十五)spring boot+thymeleaf+jpa增删改查示例
快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency> <groupId>org.springframework.b ...
- spring学习 十五 spring的自动注入
一 :在 Spring 配置文件中对象名和 ref=”id” ,id 名相同使用自动注入,可以不配置<property/>,对应的注解@Autowired的作用 二: 两种配置办法 (1 ...
- Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源
本文是 Spring Boot 整合数据持久化方案的最后一篇,主要和大伙来聊聊 Spring Boot 整合 Jpa 多数据源问题.在 Spring Boot 整合JbdcTemplate 多数据源. ...
- 十二 Spring的AOP开发入门,整合Junit单元测试(AspectJ的XML方式)
创建web项目,引入jar包 引入Spring配置文件
- Spring学习(十)--Spring的AOP
1.Spring AOP拦截器 (1)设计原理 Spring AOP在通过JDK的Proxy或者CGLIB方式生成代理对象的时候,拦截器的相关信息就配置到代理对象中了. 1)如果使用JDK的Proxy ...
随机推荐
- 【PAT甲级】1087 All Roads Lead to Rome (30 分)(dijkstra+dfs或dijkstra+记录路径)
题意: 输入两个正整数N和K(2<=N<=200),代表城市的数量和道路的数量.接着输入起点城市的名称(所有城市的名字均用三个大写字母表示),接着输入N-1行每行包括一个城市的名字和到达该 ...
- ABC156 F - Modularness
题目链接 题意还是比较清楚的,给你q个询问,对每组询问的模数和初始值不同,求满足条件\(a_j~\textrm{mod}~m_i < a_{j + 1}~\textrm{mod}~m_i,(0 ...
- Java连载81-枚举类型,生成五个不重复的随机数,集合简介
一.枚举类型 1.枚举类型的格式就是enum+枚举类型的名称,可见下面的例子. package com.bjpowernode.java_learning; public class D81_1_ ...
- 2020年python学习进阶方向
相信很多友人在学习python过程都会遇到很多 虽然python入门很容易 但是难免会遇到瓶颈 遇到问题没人交流 很难提升 对此 给你们简单指点学习方向 1.认识python linux基本 ...
- VBA 学习笔记 - 日期
date() 返回当前的系统日期 返回格式为 YYYY/MM/DD CDate() 学习资料:https://www.yiibai.com/vba/vba_cdate_function.html 将有 ...
- 4_6 师兄帮帮忙(UVa12412)(选做)
你好,我是外国语学院的本科生.正如你所知道的,编程是一个 在我们大学必修课,即使他/她的专业是远离计算机科学.我根本不喜欢这个 课程,因为我不擅长电脑,我不想有任何编程的尝试! 但我不得不做作业: ...
- BeautifulReport底层框架的解析以及html报告页面元素的更改
利用BeautifulReport 模块生成html报告 import BeautifulReport as br#引入包,之后设置一下别名 br = br.BeautifulReport(test_ ...
- 吴裕雄 python 神经网络——TensorFlow 输入数据处理框架
import tensorflow as tf files = tf.train.match_filenames_once("E:\\MNIST_data\\output.tfrecords ...
- python脚本监听nginx是否运行
import sys import time import os import logging from logging.handlers import RotatingFileHandler imp ...
- java面试(二)
1.java常见的容器 几乎所有的容器都继承了Collecton接口,包括List.Set.Queue.Map List包括Vector.ArrayList.LinkedList, Set包 ...