Spring的第四天AOP之注解版
Spring的第四天AOP之注解版
在上一篇博客中,介绍了Spring的AOP的xml版本的使用,在这篇博客中,我将介绍一下,注解版的使用。
常用注解
注解 | 通知 |
---|---|
@After | 通知方法会在目标方法返回或抛出异常后调用 |
@AfterRetruening | 通常方法会在目标方法返回后调用 |
@AfterThrowing | 通知方法会在目标方法抛出异常后调用 |
@Around | 通知方法将目标方法封装起来 |
@Before | 通知方法会在目标方法执行之前执行 |
xml文件配置
<!-- 声明激活自动扫描组件功能,spring会去自动扫描com.weno下面或则自包下面的java文件,如果扫描到了@Component,@Controller等这些注解的类,就会把他们注册为bean,名字为类名但是首字母小写 -->
<context:component-scan base-package="com.weno.*"/>
<!-- Spring默认不支持使用@AspectJ的切面声明
使用如下配置可以使Spring发现那些配置@AspectJ的bean,并且创建代理,织入切面 -->
<aop:aspectj-autoproxy/>
通知类
//声明这是一个组件,使其能够被扫描到
@Component
//声明这是一个切面Bean
@Aspect
public class Advices {
//减少重复性工作
@Pointcut(value = "execution(* com.weno.pojo.User.msg())")
public void msg(){
}
@Before(value = "msg()")
public void beforeMethod(){
System.out.println("我正在切前置");
}
@AfterReturning(returning = "rvt",value = "msg()")
public void returnMethod(String rvt){
System.out.println("我正在切返回值"+rvt);
}
@After( value = "msg()")
public void afterMethod(){
System.out.println("我正在切后置");
}
@AfterThrowing(value = "execution(* com.weno.pojo.User.msg2())")
public void errorMethod(){
System.out.println("我正在切错误");
}
}
被切的类
import org.springframework.stereotype.Component;
@Component
public class User {
public String msg(){
System.out.println("我叫msg");
return "你是谁?";
}
public void msg2(){
System.out.println("被错误通知切");
throw new RuntimeException("我故意的错");
}
}
啊啊啊啊!恭喜IG



【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下