使用方面记录域对象(编译时编织)

时间:2015-09-26 07:16:59

标签: java aspectj compile-time-weaving

我希望使用aspects将记录代码与我的域逻辑分开。但是那些aspects应该编译时编织而不是制作代理对象。

除了AspectJ之外,还有哪些选项?

1 个答案:

答案 0 :(得分:1)

嗯,另一种处理横向问题的方法是使用命令模式作为日志记录。这样,您可以使用ServiceDelegate来控制所有命令运行,并在此处控制每个横向关注点。

例如,每个命令都必须从定义runCommand方法的抽象类继承。然后调用ServiceDelegate以这种方式运行命令:

//take control of pre conditions
if(command.isAuthEnabled)
   //do what you want

command.runComman();

//take control of post conditions
if(command.isLogEnabled())
   //do what you want

也许这听起来很奇怪,但它是使用方面的替代方案。它不是更好或更糟,它是不同的,它将是方面更适合的场景,以及其他命令会很好的场景。