私は現在春のAOPを学んでいますが、コンテキスト引数をアドバイスに渡す方法がわかりません。
context
引数ではなく、引数を意味することに注意してnormal
ください。
通常の引数を渡すのは簡単です。次に例を示します。
a join point:
public void read(String something){
}
@Aspect
public class SessionAspect {
@Pointcut("execution(* *.*(String)) &&args(something)")
public void sess() {
}
@Before("sess()")
public void checkSessionExist(String something) {
//Here
}
}
次に、something
引数がアドバイスに渡されcheckSessionExist
ます。
しかし、HttpSession などのコンテキスト引数を取得するにはどうすればよいでしょうか?
a join point:
public void listUser(){
dao.list(User.class,.....);
}
@Aspect
public class SessionAspect {
@Pointcut("execution(* *.*(String))")
public void sess() {
}
@Before("sess()")
public void checkSessionExist(String something) {
//Here
}
}
この例では、listUser
参加ポイントはログイン ユーザーのみに許可されます。
したがって、現在の HttpSession に ID があるかどうかを確認したいので、アドバイスで HttpSession のインスタンスを取得する必要がありますcheckSessionExist
。
しかし、それを取得する方法は?
最も簡単な方法は、次のHttpSession
ようにすべてのジョイト ポイントに引数を追加することです。
public void listUser(HttpSession session){
dao.list(User.class,.....);
}
ただし、これは AOP 自体に反します。私の意見では、ジョインポイントはアスペクトの存在を知る必要さえありませんね。
それを修正する方法?