2016-08-02 4 views
1

У меня есть происходит некорректно аспект:Java Spring AOP Logger

@Component 
@Aspect 
public class LoggingAspect { 

    Logger logger = Logger.getLogger(LoggingAspect.class); 

    @AfterReturning(pointcut = "execution(* com.example..*.*(..))", returning = "retVal") 
    public void logAfterMethod(JoinPoint joinPoint, Object retVal) { 
     StringBuffer logMessage = new StringBuffer(); 
     logMessage.append(joinPoint.getTarget().getClass().getName()); 
     logMessage.append("."); 
     logMessage.append(joinPoint.getSignature().getName()); 
     logMessage.append("("); 
     // append args 
     Object[] args = joinPoint.getArgs(); 
     for (int i = 0; i < args.length; i++) { 
      logMessage.append(args[i]).append(","); 
     } 
     if (args.length > 0) { 
      logMessage.deleteCharAt(logMessage.length() - 1); 
     } 

     logMessage.append(")"); 
     if (retVal != null) { 
      logMessage.append(" with return value " + retVal + " of type " 
        + retVal.getClass()); 
     } else { 
      logMessage.append(" with return value null"); 
     } 
     logger.info(logMessage); 
    } 

} 

, а затем следующий боб:

@Bean 
    public LoggingAspect logger(){ 
     return new LoggingAspect(); 
    } 

, но всякий раз, когда я хочу запустить мое приложение, оно дает мне ошибки, у меня есть Google он, но не мог найти связанную с этим проблему, возможно, я чего-то не хватает: //

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embeddedServletContainerCustomizerBeanPostProcessor': BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': BeanPostProcessor before instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': BeanPostProcessor before instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException 
Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException 
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException 
+0

Могу ли я увидеть ваш pom.xml? Я думаю, что его схема должна содержать некоторую декларацию АОП – tsuda7

ответ

2

Основная причина: nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld.

Это означает, что вы должны добавить aspectjweaver.jar в свой путь к классам.

Если вы используете Maven, добавьте зависимости к pom.xml:

<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --> 
<dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjweaver</artifactId> 
    <version>1.8.9</version> 
</dependency>