通知类型的时候总共讲了五种,那么对于这五种类型都会有参数,返回值和异常吗?
我们先来一个个分析下:
-
获取切入点方法的参数,所有的通知类型都可以获取参数
-
JoinPoint:适用于前置、后置、返回后、抛出异常后通知
-
ProceedingJoinPoint:适用于环绕通知
-
-
获取切入点方法返回值,前置和抛出异常后通知是没有返回值,后置通知可有可无,所以不做研究
-
返回后通知
-
环绕通知
-
-
获取切入点方法运行异常信息,前置和返回后通知是不会有,后置通知可有可无,所以不做研究
-
抛出异常后通知
-
环绕通知
-
一、环境准备
-
创建一个Maven项目
-
pom.xml添加Spring依赖
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.10.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency> </dependencies> -
添加BookDao和BookDaoImpl类
public interface BookDao { public String findName(int id); } @Repository public class BookDaoImpl implements BookDao { public String findName(int id) { System.out.println("id:"+id); return "itcast"; } } -
创建Spring的配置类
@Configuration @ComponentScan("com.itheima") @EnableAspectJAutoProxy public class SpringConfig { } -
编写通知类
@Component @Aspect public class MyAdvice { @Pointcut("execution(* com.itheima.dao.BookDao.findName(..))") private void pt(){} @Before("pt()") public void before() { System.out.println("before advice ..." ); } @After("pt()") public void after() { System.out.println("after advice ...");

本文介绍了在Java Spring AOP中如何在不同类型的的通知(前置、后置、返回后、抛出异常后、环绕)中获取方法参数、返回值和异常信息。详细阐述了JoinPoint和ProceedingJoinPoint在获取参数时的使用,并展示了如何在环绕通知中修改参数以确保代码健壮性。同时,讨论了返回后通知和环绕通知获取返回值的方法,以及抛出异常后通知和环绕通知捕获异常的机制。
最低0.47元/天 解锁文章
2626

被折叠的 条评论
为什么被折叠?



