参考答案
一、AOP的概念
- AOP(Aspect-Oriented Programming),一般称为面向切面编程。
- 它作为面向对象的一种补充,主要用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
- 在程序开发中,主要用来解决一些系统层面上的问题,在不改变原有的逻辑的基础上,增加一些额外的功能。可用于日志、事务、权限处理等。
二、AOP的常用注解
• @aspect 定义切面
• @pointcut 定义切点
• @before 标注Before Advice定义所在的方法
• @afterreturning 标注After Returning Advice定义所在的方法
• @afterthrowing 标注After Throwing Advice定义所在的方法
• @after 标注 After(Finally) Advice定义所在的方法
• @around 标注Around Advice定义所在的方法
Aspect(切面):是通知和切入点的结合,通知和切入点共同定义了关于切面的全部内容,它的功能、在何时和何地完成其功能。
joinpoint(连接点):指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点。
Pointcut(切入点):指我们要对哪些joinpoint进行拦截的定义。通知定义了切面的”什么”和”何时”,切入点就定义了”何地”.
Advice(通知):指拦截到joinpoint之后所要做的事情就是通知。通知分为前置通知、后置通知、异常通知、最终通知、环绕通知。
Target(目标对象):代理的目标对象。
Weaving(织入):指把切面应用到目标对象来创建新的代理对象的过程,切面在指定的连接点织入到目标对象。
Introduction(引入):在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field。
3. AOP使用场景
- Authentication 权限
- Caching 缓存
- Context passing 内容传递
- Error handling 错误处理
- Lazy loading懒加载
- Debugging调试
- logging, tracing, profiling and monitoring记录跟踪\优化\校准
- Performance optimization性能优化
- Persistence持久化
- Resource pooling资源池
- Synchronization同步
- Transactions 事务
以上,是Java面试题【AOP是什么】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—