1
1
创建AOP是为了实现横切关注点(如日志记录),即在应用程序的各个模块之间“切割”关注点。例如,如果使用AspectJ实现日志记录,您将具有如下方面:
此代码将在执行应用程序的所有类之前实现日志功能。因此,它将插入您想要的一些类的日志记录行为。为了指出哪些类会受到日志记录的影响,您应该定义一个切入点(或一组切入点)。在本例中,切入点是traceMethods()。 思考你应该看的界面 this link that explains Inter-type declarations . 此声明可以用于“实现”类似使用AspectJ的接口的东西。 |
2
1
你在说什么语言? 不,这不是AOP一般的实现方式,在使用这种框架的语言(c,.net)中可能不可能实现。 您在这里所说的是一个预构建阶段,即,您有一些现在不编译的代码,您需要在将其发送到实际编译器之前使其编译…又称为代码生成。代码生成是一件很好的事情,它有各种语言的框架(再次告诉我们什么语言)。 但它是AOP吗?不。 AOP是将功能注入到已经存在的方法中。即“挂钩”功能/动作等。 |
3
1
AOP通常是在不影响这些程序实施的情况下跨过程应用交叉关注。审计日志就是一个很好的例子。您可以定义一个方面,该方面表示“应记录所有影响客户帐户的操作”。您可以在使用帐户的所有操作中实现此过程,或者您可能希望将此代码拉到一边。 这通常是通过在现有代码周围插入行为来实现的。在OO中,这些方面可以通过代理模式来应用。大多数C和Java AOP框架将在运行时基于目标类中的元数据生成代理类,并导致某些代码在指定方法之前和之后运行。 许多IOC容器提供了附加这些方面的功能,方面、方法拦截和依赖注入的概念比以前更难区分。 |
4
0
不,这不是AOP的真正目的。AOP不用于在运行时实现接口,而是用于 组合系统 :例如,业务逻辑可以在一个地方定义,在另一个地方记录逻辑,然后AOP框架将这两个逻辑组合成一个更大的系统。AOP旨在涵盖它所指的横切关注点,即系统中许多对象所需的功能,但它不是这些对象关注点的核心。 AOP的工作方式是截取对对象方法的调用,并执行一些操作,而不是执行被截取方法执行的操作。拦截点称为切入点,拦截方法称为建议方法,拦截方法上的代码称为建议。 我只熟悉Spring.net的AOP框架,它允许您通过配置文件和编程方式指定和应用切入点和通知。NET AOP有四种类型的通知:before、after、around和throw,在调用advised方法之前、调用之后、调用之前和之后以及分别引发异常时,在拦截advised方法时调用它们。无论是通过配置应用还是通过编程应用,建议的方法都不知道Spring.NET AOP,甚至不知道它已经被建议了。但是,建议的方法必须有某种实现来拦截,这样您的示例就不会工作。 Spring.NET文档非常易读,并且非常擅长解释AOP的一般情况,尤其是Spring.NET对AOP的实现,并且包含许多示例。即使只是为了更好地理解AOP,也值得一看。 |
Walter · 如何配置aspectj忽略getter和setter 6 年前 |
MikaelW · AOP,如何仅在直接从包X发出时拦截对给定类的调用 7 年前 |
Serhii · 如何从父方法获取注释? 7 年前 |
Filip · .使用自定义属性的NET Unity拦截 7 年前 |