SpringAOP面向切面编程
在Spring框架中,AOP(Aspect-Oriented Programming)提供了一种方法来模块化横切关注点,如日志记录、事务管理和性能监控等。以下是一个使用Spring AOP的简单示例:
- 添加依赖到你的
pom.xml
(如果使用Maven):
<dependencies>
<!-- Spring AOP依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
- 创建一个切面类并使用
@Aspect
注解标记它:
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LoggingAspect {
// 定义一个切点,匹配所有controller包下的方法执行
@Pointcut("execution(* com.example.controller.*.*(..))")
public void controllerLog(){}
// 在切点方法执行前执行此方法
@Before("controllerLog()")
public void beforeAdvice(JoinPoint joinPoint) {
System.out.println("Method: " + joinPoint.getSignature().getName() + " called");
}
}
- 确保你的Spring Boot应用启动类上有
@EnableAspectJAutoProxy
注解:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@SpringBootApplication
@EnableAspectJAutoProxy
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
在这个例子中,我们定义了一个切面LoggingAspect
,它将在com.example.controller
包下的所有方法执行前打印一条日志。这就是Spring AOP的基本使用方法。
评论已关闭