我有cq5申请。
我们有以下类层次结构(伪代码):
class serviceA{
methodA1(){...}
methodA2(){...}
methodA3(){
...
httprequest
...
}
methodA4(){...}
}
class serviceB{
methodB1(){
...
httprequest
...
httprequest
...
httprequest
}
methodB2(){...}
methodB3(){...}
methodB4(){
...
httprequest
...
}
}
class serviceC{
methodC1(){
...
httprequest
...
httprequest
...
}
methodC2(){...}
methodC3(){
...
httprequest
....
}
methodC4(){...}
}
我需要在httprequest之前和之后登录(以测量时间)。
但它是非常悲伤改变每个服务内部码。
你能提供更优雅的决定吗?
OSGI
会与Aspectj
合作吗?
@AspectService
怎么样?
答案 0 :(得分:0)
如果您严格遵循SOC principle,则必须为HTTP请求创建单独的类:
public class HTTPRequest {
public void doRequest() { ... } // change signature according to your needs
}
现在必须在您的服务方法中使用此类的实例。
使用该设计,可以非常轻松地进行日志记录行为。只需更改doRequest
方法。