好久不怎么用,今天整理一下
前置通知 @Before 目标方法执行之前
后置通知 @After 目标方法执行后,不管目标方法执行是否异常,该方法都会执行
返回通知 @AfterReturning 返回通知是可以访问到方法的返回值的 result
异常通知 @AfterThrowing 在目标方法出现异常时会执行
环绕通知 环绕通知类似于动态代理的全过程 必须有返回值, 返回值即为目标方法的返回值
执行顺序:
正常:
异常:
@Aspect
public class TestAnnotationAspect {
@Pointcut("execution(* com.spring.service.*.*(..))")
private void pointCutMethod() {
}
//声明前置通知 目标方法执行之前
@Before("pointCutMethod()")
public void doBefore(JoinPoint joinPoint) {
String methodName = joinPoint.getSignature().getName();
System.out.println("前置通知");
}
//声明后置通知 目标方法执行后,不管目标方法执行是否异常,该方法都会执行
@After("pointCutMethod()")
public void doAfter(JoinPoint joinPoint) {
System.out.println("后置通知");
}
//声明返回通知 返回通知是可以访问到方法的返回值的 result
@AfterReturning(value = "pointCutMethod()", returning = "result")
public void doAfterReturning(JoinPoint joinPoint,Object result) {
System.out.println("返回通知");
System.out.println("---" + result + "---");
}
//声明异常通知 在目标方法出现异常时会执行
@AfterThrowing(value = "pointCutMethod()", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint,Exception e) {
System.out.println("异常通知");
System.out.println(e.getMessage());
}
/**
* 环绕通知需要携带 ProceedingJoinPoint 类型的参数.
* 环绕通知类似于动态代理的全过程: ProceedingJoinPoint 类型的参数可以决定是否执行目标方法.
* 且环绕通知必须有返回值, 返回值即为目标方法的返回值
*/
/*
@Around("pointCutMethod()")
public Object aroundMethod(ProceedingJoinPoint pjd){
Object result = null;
String methodName = pjd.getSignature().getName();
try {
//前置通知
System.out.println("The method " + methodName + " begins with " + Arrays.asList(pjd.getArgs()));
//执行目标方法
result = pjd.proceed();
//返回通知
System.out.println("The method " + methodName + " ends with " + result);
} catch (Throwable e) {
//异常通知
System.out.println("The method " + methodName + " occurs exception:" + e);
throw new RuntimeException(e);
}
//后置通知
System.out.println("The method " + methodName + " ends");
return result;
}
*/
}
/**
*这个注解可以指定切面的优先级 越小优先级越高
*
*/
@Order(1)
相关推荐
springMVC必须的第一个jar包,后续的jar包我会陆续上传,如果大家有需要可以私信,我将所有的工具整理好发送给大家,谢谢大家的支持!
在IT行业中,Spring框架是Java开发领域中不可或缺的一部分,它为开发者提供了强大的依赖注入(DI)功能以及面向切面编程(AOP)的支持。本文将深入探讨Spring AOP这一核心特性,帮助你理解和掌握其在实际开发中的...
网上找了很多例子多数都不能运行。包括after,before,round,throw切入,可对类直接拦截,不需要定义接口文件,自己研究了2天整理出来的。 Spring AOP 的完整例子,可直接运行。带jar包。
Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。本篇将深入探讨Spring的这两...
整理的Spring AOP Aspect切入点语法,老师整理的,2018.08.01最新版
在Spring AOP中,切面可以通过基于模式的风格或@Aspect注解风格实现。 2. **连接点(Joinpoint)**:程序执行过程中的特定点,如方法调用或异常处理。在Spring AOP中,连接点通常指方法执行。 3. **通知(Advice)**:...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
Spring 框架是 Java 开发中的核心框架之一,它为构建企业级应用程序提供了全面的解决方案。本资源包含了 Spring 框架多个关键模块的代码示例,旨在帮助学习者深入理解和实践 Spring 的核心功能。 1. **Spring AOP...
3. **AOP(面向切面编程)**:Spring支持AOP,允许我们在不修改业务代码的情况下添加横切关注点,如日志、事务管理等。 4. **事务管理**:Spring提供了声明式事务管理,简化了事务处理的复杂性。 5. **MVC框架**:...
这些天自己整理的一些对SpringAOP的认识
此外,Spring.NET 还支持 AOP(面向切面编程),允许开发者在不修改源代码的情况下,向现有代码添加新的功能或监控行为。AOP 在 Spring.NET 中主要通过代理模式实现,可以用于事务管理、日志记录、性能度量等场景。 ...
这个名为“spring整理好的jar包.zip”的压缩文件包含了Spring框架中几个关键领域的核心组件,旨在简化开发过程并提升效率。让我们逐一深入理解这些组件及其在实际应用中的作用。 首先,我们来看“ioc专用包”。IOC...
Spring的核心特性之一是控制反转(Inversion of Control, IOC),它将对象的创建和管理交给Spring容器。依赖注入(Dependency Injection, DI)则是实现IOC的一种方式,允许你声明对象之间的依赖关系,而不是在代码...
7. **Bean装配**:Spring的bean装配是其核心特性之一,它负责管理和组合应用中的对象。通过XML、注解或Java配置,我们可以定义bean之间的依赖关系,使组件之间的解耦达到最大化。 8. **注解**:Spring框架中的注解...
这个"spring5学习代码整理文件"包含了个人在学习Spring5过程中整理的各种代码示例,旨在帮助理解和掌握Spring5的关键概念和技术。 1. **依赖注入(DI)**:Spring5通过DI来解耦应用程序组件,使得组件之间不再硬...
通过以上介绍,我们可以看到Spring框架的强大之处在于其高度的灵活性、模块化设计以及对于现有技术的良好集成。无论是对于初学者还是资深开发者来说,Spring都提供了强大的工具和支持,帮助他们构建高效、可靠的Java...
【新手向】Spring系列Jar包整理是一篇针对初学者的指南,主要涵盖了Spring框架的核心组件以及与MyBatis集成的相关库。在这个压缩包中,包含了以下几个重要的Java库: 1. **spring-core-5.2.5.RELEASE.jar**: 这是...
2. **依赖注入**:Spring框架的核心特性之一,通过DI,对象之间的依赖关系不再硬编码,而是由外部容器负责管理,提高了代码的可测试性和可维护性。Spring支持构造器注入、setter注入和接口注入三种方式。 3. **AOP*...
spring方面介绍 常用注解 生命周期 AOP DI