一、Aop的定义
想学习SpringAOP,首先肯定要知道它的定义。AOP的实现通常依赖于代理模式和动态代理技术,通过在运行时动态地将横切关注点织入到目标对象的方法中,实现了对目标对象方法的增强。其主要包括切点、切面、通知和连接点三个功能;简单的说AOP主要是用来帮助编码人员更好进行代码的模块化和重用。
二、Aop的基本使用
在使用Spring AOP时,可以通过注解或XML配置两种方法来定义切点和通知。
下面是一个简单的例子:
在一个java Maven项目中进行编码时,可以通过接口和他的实现类来进行日志的记录功能,UserService接口和实现类UserServiceImpl,如果想在UserServiceImpl的方法执行前后记录日志,就需要使用到AOP来完成这一个功能。
如果使用这一个注解@Pointcut注解,那么最开始就需要定义一个切点,告诉Spring在哪些地方需要应用通知,比如:
@Pointcut("execution(* com.example.UserService.*(..))")
private void userServiceMethods() {}
我在上面是使用了@Pointcut注解表示userServiceMethods()方法是一个切点,它可以匹配UserService接口中的所有方法。
接下来,就是定义一个通知,用于告诉Spring在切点处需要执行的逻辑。这里有两个注解可以实现这个通知的定义,分别为:@Before和@After注解,比如:
@Before("userServiceMethods()")
public void beforeAdvice(JoinPoint joinPoint) {
System.out.println("前置方法: " + joinPoint.getSignature().getName());
}
@After("userServiceMethods()")
public void afterAdvice(JoinPoint joinPoint) {
System.out.println("后置方法: " + joinPoint.getSignature().getName());
}
注意哦!这里的@Before和@After注解一般是表示beforeAdvice()和afterAdvice()方法,其分别是在切点处执行前和执行后需要执行的逻辑。(如果不明白,可以去看两个链接,讲解很详细:Spring @Aspect、@Before、@After 注解实现 AOP 切面功能_aspect before-优快云博客以及)
同时,也需要在Spring配置文件中启用AOP,并将切点和通知关联起来,不然会框框报错哦!一个简略的例子展示如何配置(XML):
<aop:aspectj-autoproxy />
<bean id="userService" class="com.example.UserServiceImpl" />
<bean id="loggingAspect" class="com.example.LoggingAspect" />
这里的<aop:aspectj-autoproxy />表示启用自动代理,<bean>标签定义了UserService的实现类,<bean>标签定义了LoggingAspect,包含切点和通知的切面。
以上是一个基础的AOP知识,通过以上的配置,Spring AOP会在UserService接口的方法执行前后自动执行LoggingAspect中定义的通知逻辑,从而实现了日志记录的功能。
三、事务的定义
事务是指作为单个逻辑工作单元执行的一系列操作,要么全部成功执行,要么全部失败回滚。在数据库和应用程序开发中,事务是非常重要的概念。
四、事物的特性
事务通常具有以下四个特性:
-
原子性(Atomicity)2.一致性(Consistency)3.隔离性(Isolation)4.持久性(Durability)
在Java中,常用的事务管理方式包括编程式事务管理和声明式事务管理。在Spring框架中,可以使用@Transactional注解或XML配置来声明事务,从而实现声明式事务管理。
声明式事务管理通过AOP(面向方面的编程)来实现,它可以将事务的管理逻辑与业务逻辑分离,从而提高了代码的模块化和可维护性。
嘿嘿,以上就是学习的全部内容,内容比较复杂,还没有完全吸收还得继续努力!