spring aop如何使用
时间: 2023-09-02 09:12:21 浏览: 115
Spring AOP是一种面向切面编程的技术,用于在不修改原始代码的情况下添加横切关注点。Spring AOP提供了一种简单的方法来创建横切关注点,例如日志记录、性能监控、安全性等,这些关注点可以应用于多个类和方法中。
以下是使用Spring AOP的步骤:
1. 添加Spring AOP依赖
在Maven项目中,可以通过以下方式添加Spring AOP依赖:
```xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.8</version>
</dependency>
```
2. 创建切面类
切面类是用于定义横切关注点的类。它包含一个或多个通知方法,每个方法在目标方法执行前、执行后或出现异常时执行。通知方法可以使用@Before、@After、@AfterReturning、@AfterThrowing和@Around注解进行标记。
```java
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.myapp.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before executing " + joinPoint.getSignature().getName() + " method");
}
@AfterReturning(pointcut = "execution(* com.example.myapp.service.*.*(..))", returning = "result")
public void logAfterReturning(JoinPoint joinPoint, Object result) {
System.out.println("After executing " + joinPoint.getSignature().getName() + " method with result " + result);
}
@AfterThrowing(pointcut = "execution(* com.example.myapp.service.*.*(..))", throwing = "ex")
public void logAfterThrowing(JoinPoint joinPoint, Exception ex) {
System.out.println("Exception thrown in " + joinPoint.getSignature().getName() + " method with message " + ex.getMessage());
}
}
```
3. 配置切面
在Spring配置文件中,需要将切面类声明为一个bean,并配置切入点和通知。
```xml
<bean id="loggingAspect" class="com.example.myapp.aspect.LoggingAspect"/>
<aop:config>
<aop:aspect ref="loggingAspect">
<aop:pointcut expression="execution(* com.example.myapp.service.*.*(..))" id="serviceMethods"/>
<aop:before pointcut-ref="serviceMethods" method="logBefore"/>
<aop:after-returning pointcut-ref="serviceMethods" method="logAfterReturning" returning="result"/>
<aop:after-throwing pointcut-ref="serviceMethods" method="logAfterThrowing" throwing="ex"/>
</aop:aspect>
</aop:config>
```
4. 应用切面
在需要应用横切关注点的类或方法上添加@Aspect注解。
```java
@Service
public class MyService {
@Autowired
private MyRepository repository;
@Transactional
public void save(MyEntity entity) {
repository.save(entity);
}
}
```
以上就是使用Spring AOP的基本步骤。通过切面类、切入点和通知,可以方便地实现横切关注点,并将其应用于多个类和方法中。
阅读全文