Я пытаюсь сделать осуществлять регистрацию в AOP в Google - Guice. Для этого я использовал MethodInterceptor
, но он не работает. Я использовал то же самое весной, определяя точки. Там все прекрасно работает.AOP на основе регистрации в Guice
Spring Код для АОП на основе регистрации -
@Aspect
public class LoggingAspect {
private static Logger logger = LoggerFactory.getLogger(LoggingAspect.class);
@Around("requiredLog()")
public Object bentoBoxAround(ProceedingJoinPoint proceedingJoinPoint) {
Object returnValue = null;
try {
logger.info("Entered into the method -> " + proceedingJoinPoint.getSignature().toShortString()
+ " and input arguments are -> " + Arrays.asList(proceedingJoinPoint.getArgs()));
returnValue = proceedingJoinPoint.proceed();
logger.info("Method Execution over !! " + proceedingJoinPoint.getSignature().toShortString());
} catch (Throwable e) {
logger.error("Method has an exception " + e.getMessage());
}
return returnValue;
}
@Pointcut("within(org.cal.bento..*)")
public void allRequiredPakageLog() {
}
}
Из выше кода мы можем регистрировать все расстрелы класса и метод внутри org.cal.bento.*
пакета.
Guice код АОП на основе протоколирования -
public class GuiceLoggingInterceptor implements MethodInterceptor {
private static Logger logger = LoggerFactory
.getLogger(GuiceLoggingInterceptor.class);
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
Object returnValue = null;
try {
logger.info("GUICE - Entered into the method -> " + invocation.getMethod().getName()
+ " and input arguments are -> " + Arrays.asList(invocation.getArguments()));
returnValue = invocation.proceed();
logger.info("Method Execution over !! " + invocation.getMethod().getName());
} catch (Throwable e) {
logger.error("GUICE - Method has an exception " + e.getMessage());
}
return returnValue;
}
}
Binding Класс -
public class GuiceAopModule extends AbstractModule {
@Override
protected void configure() {
bindInterceptor(Matchers.any(), Matchers.any(), new GuiceLoggingInterceptor());
}
}
Можем ли мы сделать то же в Guice для входа (путем определения класса на основе только один аспект для всей система регистрации). Я не хочу изменять каждый класс.
Refered Учебник - https://schakrap.wordpress.com/2009/07/30/method-entry-exit-logging-in-guice-with-aop/
Любая помощь будет высоко оценен.
«Я использовал MethodInterceptor для этого, но он не работает». Каков ожидаемый результат? – CKing
Я хочу зарегистрировать все выполнение метода внутри пакета. Этот код, который я использовал, отлично соблюдает, но не блокирует какой-либо журнал внутри файла журнала. –
Как создаются ваши объекты? Перехват метода с помощью guice работает только тогда, когда Guice создает все экземпляры, которые вы хотите перехватить. – pandaadb