我需要將一些審計日誌添加到某些不在Web層中的業務方法。其中一個要求是在此審計日誌中存儲執行業務方法的用戶和遠程終端的IP。我決定使用AspectJ來審計所有這些方法,以免污染他們沒有商業代碼。 (注:我沒有使用Spring,這是一個古老的Struts 1的webapp)如何在AspectJ中獲取HTTPServletRequest
public void myMethod(Object param, HttpRequest request**){
//Bussiness code that never use request param
}
@After("bla bla matches myMethod")
public void myAdvice(JoinPoint jp){
Object request = (HttpServletRequest)jp.getArgs()[1];
//bla bla using the request to get user and IP
}
所以我的問題是,沒有任何人有任何建議,以獲得在諮詢一個更好的或優雅的方式Servlet的請求?事實上,myMethod不包含審計代碼(這真的很好),但現在有了第二個參數,它不會被方法直接使用,並且可能會讓其他開發人員感到困惑。請不要推薦我去諮詢Servlet而不是業務方法。
也許你可以使用this()或args()切入點。 – alehro