私はポイントカットのパラメータを持つだけで少し混乱していますが、感謝...ヘルプ - ときトレースメッセージがすべき誰も私にそれを説明することができれば、AspectJの
import Java.util.logging.*;
import org.aspect j.lang.*;
public aspect TraceAspect {
private Logger _logger = Logger.getLogger("trace");
TraceAspectV2() {
_logger.setLevel(Level.ALL);
}
pointcut traceMethods()
(execution(* Account.*(..)) || execution(*.new(..))) && !within(TraceAspect);
before() : traceMethods() {
if (_logger.isLoggable(Level.INFO)) {
Signature sig = thisJoinPointStaticPart.getSignature();
_logger.logp(Level.INFO, sig.getOeclaringType().getName(),sig.getNameO , "Entering");
}
)
)
ポイントカット面では定義されて生成される。つまり、プログラムのどの時点で「入力中」のログメッセージ が記述されます。
PS:これは過去の試験紙からである....と私は正確にロガーのように入力を生成しないときに理解しようとしています....
基本的には、アカウントのメソッドが実行され、traceAspect以外の任意のクラスのコンストラクタが実行されるたびに、入力が印刷されます。 – John
@john:はい、正しい。 'execution'は、リフレクションコールに対してもアドバイスが実行されるようにします。他のオプションは 'call(...)'となりますが、アドバイスはメソッドへの直接呼び出しにのみ有効です – knittl
助けてくれてありがとう... !!! – John