AOP面向切面编程:AOP的底层实现就是基于动态代理---->JDK和Cglib。
当实现接口时,那么就使用JDK,如果没有实现接口就用Cglib
AOP 在spring中具体的使用,添加登录日志功能
添加依赖
<!--servlet-api依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!--spring-切面依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.15.RELEASE</version>
</dependency>
切面类代码的完整实现
@Component
@Aspect
public class LoginAop {
@Autowired
private LogService logService;
@AfterReturning(value="execution(* com.computer.controller.StaffController.login(..))",returning = "r")
public void loginAfterReturn(JoinPoint joinPoint, Object r) throws IllegalAccessException, InstantiationException {
Object[] args = joinPoint.getArgs();
Staff staff= (Staff) args[0];
//获取request对象。
ServletRequestAttributes