在Spring AOP中,关注点(Concern)和横切关注(Cross-Cutting Concern)是两个相关但不同的概念。
1. 关注点(Concern):
定义: 关注点是应用程序中一个模块的功能集合,它代表了系统中的一个特定的功能或目标。
例子: 例如,日志记录、事务管理、安全性等都可以是关注点。每个关注点包含一组相关的行为。
2. 横切关注(Cross-Cutting Concern):
定义: 横切关注是一个横跨多个模块或组件的关注点,它不属于特定的模块,而是影响系统中多个模块的功能。
例子: 在日志记录中,将日志记录代码横切地插入到多个模块中,而不是只存在于一个模块中。横切关注点跨足了多个模块。
在AOP中,横切关注通常由切面(Aspect)来处理。切面是横切关注的模块化体现,它包含了一组切点(Pointcut)和通知(Advice)。切点定义了关注点在代码中的位置,而通知定义了在何时、如何执行与横切关注相关的代码。
因此,关注点是系统中特定模块的功能,而横切关注是横跨多个模块的共同关注点,通过AOP的切面可以将横切关注点模块化,使得关注点的实现与业务逻辑分离,提高代码的可维护性和重用性。