Java和宏中的Aspects有什么区别

时间:2017-03-08 09:51:19

标签: java macros aspect

我开始对Java中的Aspects感兴趣,但是我很难理解Aspects的好处和用法。我之前在C ++中使用过Macros。我想Aspects以类似的方式工作。我的意思是"每当你看到X时,插入代码Y"。也许我不应该尝试使用Macro知识来学习Aspects

您能否举一些具体的例子来比较AspectsMacros以更好地理解这一点?

2 个答案:

答案 0 :(得分:1)

宏是静态代码注入然后编译为一个整体,其中一个Aspect既可以是静态的也可以是动态的,你可以在代码注入代码的地方添加切点,更多的方面是为你的方法添加逻辑,决定是否继续或不。例如,它用于日志记录,安全性,事务管理......

答案 1 :(得分:0)

使用宏,您必须在源代码中指明您希望应用宏的每个位置。

使用Aspects,您可以在一个单独的位置定义应该更改的所有位置。

因此,如果您想添加/删除方面,您只需要在现场进行更改,但如果要添加/删除宏,则必须更改使用宏的每个位置。

另一方面,宏更强大,可以更自由地使用。