私はSpring AOPがプライベートとプロテクトメソッドを傍受することはできませんが、奇妙な方法でそれらを傍受しているのはなぜですか?Spring AOPが特定の状況下で保護されたメソッドをインターセプトするのはなぜですか?
私は私が傍受したい、これらの機能があります。
@Aspect
public class Logging {
@Before("execution(* com.tutorialspoint.Student.*Name*(..))")
public void beforeAdvice(JoinPoint joinPoint){
System.out.println("Going to setup student profile."+joinPoint.getSignature().toString());
}
}
このコードが実行されると、私はこのコードを実行する際のgetNameとgetNamesprotected両方が傍受されますが、:これは私の@Aspect
コードです
public String getName(String string) {
System.out.println("Name : " + name + string);
return name;
}
protected String getNamesprotected(String string) {
System.out.println("Name : " + name + string);
return name;
}
を:
@Aspect
public class Logging {
@Before("execution(* com.tutorialspoint.Student.getNamesprotected(..))")
public void beforeAdvice1(JoinPoint joinPoint){
System.out.println("Going to setup student profile."+joinPoint.getSignature().toString());
}
}
何も傍受されません。また、getNamesprotected
を*getNamesprotected*
に置き換えようとしましたが、依然として傍受されません。 *Name*
がそこにいるときに傍受するだけです。
これはなぜ起こっているのですか?
あなたが記述するものは、Spring AOPの代わりにAspectJを使用しない限り、信じられません。私はあなたが間違いを犯したと思う。 Spring AOPは決して保護されたメソッドを傍受しません。まだそれがそうだと思うなら、GitHubの[SSCCE](http://sscce.org/)でそれを証明してください。それから私は見て喜んでだろう。 – kriegaex
SSCCEの例を挙げることができますか?私はここに新しいので、正確に1つを作成する方法を知っていない。 –
あなたは深刻ですか?あなたはリンクをたどってSSCCEの意味を読んだことがありますか?それでは、それが何を意味しているのか、自分のコードから作成する方法を理解できなければ、ソフトウェア開発者としての才能の欠如に悩まされ、新しい仕事を見つけようとするか、単に怠け者に過ぎないでしょう。私はあなたに疑念の恩恵を与えることを選択し、あなたが悪い開発者であると考えることを拒否します。したがって、私は怠惰があなたの問題だと結論づけます。だから、敬意を表して、脳を入れ替えて、他の人があなたの質問に答えるのを手助けしようと思いますか? – kriegaex