Я использую Spring-AOP, чтобы посоветовать управляемый bean-компонент, который расширяет абстрактный класс, который реализует 3 интерфейса. В иерархии наследования есть другие управляемые весной бобы.Spring-AOP и SLF4J
Я пытаюсь взять наименее инвазивный подход, используя пружинный LTW:
<context:component-scan base-package="com.foo.aop"/>
<!-- ... -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
<context:load-time-weaver/>
Используя натуралистический подход, чтобы попытаться войти случиться:
@Aspect
@Component
public class ForStackOverflow {
private final Log commons = LogFactory.getLog(ForStackOverflow.class);
private final org.apache.log4j.Logger log4j = org.apache.log4j.Logger.getLogger(ForStackOverflow.class);
private final Logger jul = Logger.getLogger(ForStackOverflow.class.getSimpleName());
private final org.slf4j.Logger slf4j = org.slf4j.LoggerFactory.getLogger(ForStackOverflow.class);
@Pointcut(value="within(com.foo.aop.AbstractClass+) " +
"&& execution(* advisedMethod(com.foo.SomeType)) " +
"&& args(someType)")
private void adviseMe(SomeType someType){}
@After(value="adviseMe(com.foo.SomeType) && args(someType)", argNames = "someType")
public void itWorked(SomeType someType) {
String msg = "DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG";
logIt(msg);
IsNotNull(someType, "someType");
String message = "SomeType [ " + someType + "] loaded.";
status(message);
logIt(msg);
}
void status(String message) {
logIt(message);
}
private void logIt(String msg){
System.out.println("STDOUT: " + msg);
System.err.println("STDERR: " + msg);
commons.warn("COMMONS: " + msg);
log4j.warn("LOG4J: " + msg);
jul.warning("JUL: " + msg);
slf4j.warn("SLF4J: " + msg);
}
}
I есть доказательства того, что мой метод сообщается, потому что я могу бросить оттуда и увидеть, как трассировка стека появляется в соответствующем месте.
Но каротаж неуловим.
(я мост log4j и Обще-каротаж в SLF4J. Приложение требует регистрации Java Util как его основной реализация.)
А где это Questio n отметьте в своем вопросе? – kan