1. AOP(面向切面编程,Aspect-Oriented Programming)
(1)AOP是一种编程范式,旨在通过“切面”(Aspect)来对系统的横切关注点进行模块化。横切关注点通常是那些跨越多个模块的功能,比如日志记录、事务管理、安全控制等。
(2)特点:
切面:定义了跨越多个类的行为,通常通过@Aspect注解来标识。
通知(Advice):指定了切面应执行的行为,通常有不同的类型,如@Before(方法执行前)、@After(方法执行后)、@Around(方法执行前后)等。
切点(Pointcut):定义了哪些方法应该被通知(拦截)。
连接点(Joinpoint):程序执行过程中的某个点,可以在这个点上插入切面的逻辑。
(3)示例:
使用Spring AOP时,通常通过@Aspect注解定义切面,@Before和@After注解指定通知。例如:
@Aspect
@Component
public class LogAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Method " + joinPoint.getSignature().getName() + " is about to be called.");
}
}
AOP适用于跨切关注点的处理,比如日志、事务管理、权限控制等。
2. 过滤器(Filter)
(1)过滤器是基于Servlet的概念,用于在请求和响应被处理前后做一些处理,通常用于Web应用中进行请求预处理和响应后处理。它不依赖于Spring框架,属于Java EE规范的一部分。
(2)特点:
生命周期:由容器管理(如Tomcat),在web应用启动时加载,过滤器会根据web.xml配置进行初始化。
功能:可以用于日志记录、权限校验、输入数据清理等操作。
作用范围:对HTTP请求进行过滤,并可以修改请求或响应内容。
(3)示例:
@Web