Spring中的AOP

介绍以下Spring的AOP

AOP(Aspect-Oriented Programming),即面向切面编程,用人的话就是把公共的逻辑抽离出来,让开发者能够专注于业务逻辑的开发。

和IOC一样,AOP也指的是一种思想。AOP思想是OOP(Object-Oriented-Programming)的补充。OOP是面向类和对象的,但是AOP则是面向不同切面。一个切面可以横跨多个类和对象去操作,极大的丰富了开发者的使用方式,提高了开发效率。

  • 譬如,一个订单的创建,可能需要以下步骤:
    • 权限校验
    • 事务管理
    • 创建订单
    • 日志打印

如果使用AOP思想,我们就可以把这四步当成四个"切面",让业务人员专注开发第三个切面,其他三个切面则是基础的通用逻辑,统一交给AOP封装和管理。

如果有多个切面,他们的执行顺序是怎么样的呢?

多个切面默认执行顺序为按照bean的名称字母排序例如AspectA > AspectB

@Order注解的value属性指定各个切面的执行顺序,value值默认为Integer的最大值,value越小优先级越高。
因此Order注解默认优先级为最低,通过为多个切面使用@Order注解的value值指定其优先级。

能不能通过AOP,去定义一个注解呢?

可以,通过@pointcut注解,可以在里面使用annotation表达式,然后通过这个表达式,就可以自定义注解了。

我们使用AOP思想如何实现一个日志的这种管理?

1. 创建日志实体和数据库表
首先,需要创建一个日志实体类和对应的数据库表来存储日志信息。日志实体类通常包含用户名、用户操作、请求方法、请求参数、执行时长、IP地址和创建时间等属性。数据库表则对应这些属性,用于持久化存储日志数据。
2. 编写DAO和Service类
接着,编写数据访问对象(DAO)和服务类(Service),用于操作日志数据库表。在Spring中,可以使用MyBatis或JPA等持久层框架来简化数据库操作。
3. 导入Maven依赖
为了使用Spring AOP,需要在项目的pom.xml文件中添加spring-boot-starter-aop依赖。
4. 编写注解和切面类
定义一个自定义注解,比如@SysLog,用于标记需要记录日志的方法。然后,创建一个切面类,使用@Aspect注解标记,并在其中定义切点(Pointcut)和通知(Advice)。切点用于指定哪些方法需要被增强,而通知则定义了具体的增强逻辑,比如在方法执行前后记录日志信息。
5. 配置工具类
配置工具类,如HttpContextUtils和IPUtils,用于获取HTTP请求信息和IP地址,这些信息通常会记录在日志中。
6. 系统测试
最后,通过在控制器方法上添加自定义注解,如@SysLog(“查询用户列表”),来测试AOP日志功能是否正常工作。执行被注解标记的方法时,应该能够在数据库中看到相应的日志记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GitIDEA

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值