写一个spring aop注解的例子
时间: 2024-02-23 18:31:39 浏览: 78
好的,以下是一个Spring AOP注解的例子:
首先,在Spring的配置文件中声明aop的命名空间:
```xml
<beans xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
```
然后,在需要切面的类中加上@Aspect注解,同时定义需要拦截的方法:
```java
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Logging before " + joinPoint.getSignature().getName());
}
@AfterReturning("execution(* com.example.service.*.*(..))")
public void logAfterReturning(JoinPoint joinPoint) {
System.out.println("Logging after returning " + joinPoint.getSignature().getName());
}
@AfterThrowing("execution(* com.example.service.*.*(..))")
public void logAfterThrowing(JoinPoint joinPoint) {
System.out.println("Logging after throwing " + joinPoint.getSignature().getName());
}
@After("execution(* com.example.service.*.*(..))")
public void logAfter(JoinPoint joinPoint) {
System.out.println("Logging after " + joinPoint.getSignature().getName());
}
}
```
这里我们定义了一个LoggingAspect类,并加上了@Aspect注解。在这个类中,我们定义了四个方法,分别是@Before、@AfterReturning、@AfterThrowing和@After,它们分别表示在目标方法执行之前、之后返回、之后抛出异常和之后执行。参数JoinPoint表示连接点,可以获取到目标方法的一些信息。
最后,在Spring的配置文件中配置aop切面:
```xml
<aop:aspectj-autoproxy/>
<bean id="loggingAspect" class="com.example.aspect.LoggingAspect"/>
```
这里我们定义了一个名为loggingAspect的bean,并指定它的class为LoggingAspect。同时,我们使用<aop:aspectj-autoproxy/>标签自动配置AOP代理。这样,当我们在业务逻辑代码中调用被拦截的方法时,Spring会自动在方法执行前后织入切面代码,实现日志记录的功能。
阅读全文