【发布时间】:2015-12-24 00:32:13
【问题描述】:
我想使用aspects 将日志记录代码与我的域逻辑分开。但是那些aspects 应该做编译时编织而不是制作代理对象。
除了AspectJ,还有哪些选项?
【问题讨论】:
标签: java aspectj compile-time-weaving
我想使用aspects 将日志记录代码与我的域逻辑分开。但是那些aspects 应该做编译时编织而不是制作代理对象。
除了AspectJ,还有哪些选项?
【问题讨论】:
标签: java aspectj compile-time-weaving
嗯,另一种处理横向问题的方法,如日志记录,是使用命令模式。这样,您可以使用 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
也许这听起来很奇怪,但它是使用方面的替代方法。它不是更好或更坏,它是不同的,它将是方面更适合的场景,而其他地方的命令会很好。
【讨论】: