NC AOP:面向方面编程的包装与拦截详解

需积分: 50 4 下载量 86 浏览量 更新于2024-09-08 收藏 281KB DOC 举报
NC AOP (Aspect-Oriented Programming) 是一种编程范式,它允许在不修改原有组件代码的情况下,通过额外的“方面”(Aspect)增强组件的功能或对其进行拦截。在正确的组件部署后,当需要对组件的行为进行扩展或控制时,AOP提供了一种灵活的方式来组织和管理代码,避免了传统编程中重复和分散的代码。 **需求描述**: 当组件部署完毕后,使用AOP的主要目的是在不影响原始功能的基础上,通过“包装方面”(包装式增强)来添加额外的功能,或者通过“拦截方面”(通知式增强)来监控、修改或阻止特定方法的行为。这种方式确保了核心业务逻辑的清晰性,同时引入了模块化的辅助功能。 **相关术语**: - **Aspect**:又称为切面,它是通知和切入点的组合,定义了何时何地以及如何应用通知。 - **Advice**:通知是方面的具体实现,代表了方面要完成的任务,如在方法调用前后执行操作,或在异常发生时执行补偿逻辑。NC系统支持五种类型的Advice:Before、Around、After、AfterReturning和AfterThrowing。 - **Pointcut**:切入点,用于匹配通知应应用的特定方法或执行点,可以通过类名、方法名或模板匹配。 - **Joinpoint**:连接点,程序执行过程中的可插入点,例如方法调用、异常处理等,是方面代码插入程序流程的关键位置。 **使用步骤**: 1. **创建组件**:首先,定义一个组件类,比如`MyImpl`实现`IMyService`接口,包含基本的方法,如`test()`。 ```java public class MyImpl implements IMyService { public void test() { System.out.println("test"); } } ``` 2. **部署组件**:在UPM(统一平台管理器)文件中,将`MyImpl`类作为组件部署,给定一个名称,如`cmp`。 3. **创建方面**: - **拦截方面**:定义一个通知(Advice),并与切入点(Pointcut)关联,指示在何时何地应用。 - **包装方面**:可能涉及修改组件类的行为,如增加日志记录,但不改变原始接口。 4. **部署方面**:在UPM文件中配置方面,指定其应用条件和顺序,包括拦截顺序(在哪些方法前/后执行)、包装顺序等。 5. **注意事项**:AOP的使用需遵循一定的规则,如确保切点选择准确,避免过度使用导致代码复杂性增加。在编写方面时,要明确通知的类型和执行时机,以便在部署时正确配置。 NC AOP通过模块化的“方面”机制,实现了对已有组件功能的轻量级扩展和控制,提高了代码的复用性和可维护性。在实际项目中,开发者需要根据需求合理选择AOP的使用场景,确保代码结构清晰,性能优化。