标签:后置 通知 切入点 add atguigu execution com public
(1)切入点表达式作用:知道对哪个类里面的哪个方法进行增强
( 2 )语法结构: execution([ 权限修饰符 ] [ 返回类型 ] [ 类全路径 ] [ 方法名称 ]([ 参数列表 ]) ) 举例 1 :对 com.atguigu.dao.BookDao 类里面的 add 进行增强 execution(* com.atguigu.dao.BookDao.add(..)) 举例 2 :对 com.atguigu.dao.BookDao 类里面的所有的方法进行增强 execution(* com.atguigu.dao.BookDao.* (..)) 举例 3 :对 com.atguigu.dao 包里面所有类,类里面所有方法进行增强 execution(* com.atguigu.dao.*.* (..)) 1 、创建类,在类里面定义方法 public class User { public void add() { System. out .println( "add......." ); } } 2 、创建增强类(编写增强逻辑) ( 1 )在增强类里面,创建方法,让不同方法代表不同通知类型 //增强的类 public class UserProxy { public void before() { //前置通知 System. out .println( "before......" ); } } 3 、进行通知的配置 ( 1 )在 spring 配置文件中,开启注解扫描 <!-- 开启注解扫描 --> < context :component-scan base package= "com.atguigu.spring5.aopanno" ></ context :component-scan > ( 2 )使用注解创建 User 和 UserProxy 对象
(
3
)在增强类上面添加注解
@Aspect
//增强的类
@Component
@Aspect
//生成代理对象
public class
UserProxy {
(
4
)在
spring
配置文件中开启生成代理对象
<!-- 开启 Aspect 生成代理对象-->
<
aop
:aspectj-autoproxy
></
aop
:aspectj-autoproxy
>
4
、配置不同类型的通知
(
1
)在增强类的里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置
//增强的类
@Component
@Aspect
//生成代理对象
public class
UserProxy {
//前置通知
//@Before 注解表示作为前置通知
@Before
(value =
"execution(* com.atguigu.spring5.aopanno.User.add(..))"
)
public void
before() {
System.
out
.println(
"before........."
);
}
//后置通知(返回通知)
@AfterReturning
(value =
"execution(*
com.atguigu.spring5.aopanno.User.add(..))"
)
public void
afterReturning() {
System.
out
.println(
"afterReturning........."
);
}
//最终通知
@After
(value =
"execution(* com.atguigu.spring5.aopanno.User.add(..))"
)
public void
after() {
System.
out
.println(
"after........."
);
}
//异常通知
@AfterThrowing
(value =
"execution(*
com.atguigu.spring5.aopanno.User.add(..))"
)
public void
afterThrowing() {
System.
out
.println(
"afterThrowing........."
);
}
//环绕通知
@Around
(value =
"execution(* com.atguigu.spring5.aopanno.User.add(..))"
)
public void
around(ProceedingJoinPoint proceedingJoinPoint)
throws
Throwable {
System.
out
.println(
"环绕之前........."
);
//被增强的方法执行
proceedingJoinPoint.proceed();
System.
out
.println(
"环绕之后........."
);
}
}
标签:后置,通知,切入点,add,atguigu,execution,com,public 来源: https://blog.csdn.net/weixin_43882788/article/details/122464512
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
