各クラス内で(静的なfinal)Loggerインスタンスを宣言するInter-Type宣言を作成したいと思います。
コンストラクターには、それを囲むクラスKlazz.class
値を渡す必要があります。
@Aspect
public class LoggerAspect {
public interface Logger {
}
public static class LoggerImpl implements Logger {
private static final Logger logger =
new Logger(thisJoinPoint.getTarget().getClass()/*.getName()*/);
}
@DeclareParents(value="com.my.api..*",defaultImpl=LoggerImpl.class)
private Logger implementedInterface;
}
thisJoinPoint
上記のソリューションを作成しましたが、AspectJの外部では使用できませんadvice
。
Loggerのデフォルト実装がクラスKlazzに適用されている場合、上記のコードを変更して、Klazz.classをLoggerコンストラクターに正常に渡すにはどうすればよいですか?