这个面试题从AOP的概念、特点、如何实现、动态代理、使用场景五个方面回答
概念:AOP(面向切面编程) 能够将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
特点:在不改变原有业务逻辑下,增强横切逻辑代码,解耦合,避免横切逻辑代码重复
动态代理:Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么 Spring AOP 会使用 JDK Proxy,去创建代理对象,而对于没有实现接口的对象, Spring AOP 会使用 Cglib 生成一个被代理对象的子类来作为代理
实现:将与业务无关,却为业务模块所共同调用的逻辑抽取出来形成增强,然后将增强织入指定的切入点。