2017-07-20 6 views
1

Ich versuche Rest Dienst abzufangen Anrufe mit einem Aspekt auf die folgende WeiseFrühling Boot AOP Aspect nicht aufgerufen wird

package mypackage.services.Service; 

@Component 
public class Service { 

     @Override 
     public Response helloService() { 
     return handleResult("Hello test " + new Date()); 
     } 
} 

@Component 
@Aspect 
public class AuditLog { 

    @Before("execution(* mypackage.services.Service.*(..))") 
    public void beforeServcie(JoinPoint jp){ 
     log.info("Before ",jp.getSignature().getName()); 
    } 
} 

ich die folgenden Maven Abhängigkeiten bin mit

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>4.3.6</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.8.10</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>1.8.10</version> 
    </dependency> 

Dieses maven Plugin

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>aspectj-maven-plugin</artifactId> 
     <version>1.0</version> 
    </plugin> 

Und meine Konfiguration xml enthält

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop.xsd"> 

    <context:component-scan base-package="mypackage"/> 
    <aop:aspectj-autoproxy proxy-target-class="true" /> 

auch in der Anwendungsklasse I die folgende Anmerkung

@Configuration 
    @EnableAspectJAutoProxy(proxyTargetClass=true) 
    public class Configuration{ 
    ... 
    } 

Beim Start hinzugefügt haben, von Bohnen in der Application anmelden, kann ich, dass der Aspekt sehen Die Klasse "AuditLog" wird erstellt.

Ich habe 2 Haltepunkte gesetzt, aber der Debugger stoppt nicht bei der "beforeServcie" -Methode, aber es stoppt bei "HalloService".

Was fehlt mir?

+1

versucht versuchen, aber es nicht –

+0

Sie müssen all –

+0

diese aspectj Abhängigkeiten nicht funktionierte, warum haben Sie einen separaten XML-Config? –

Antwort

0

dieses

execution(* mypackage.services.Service.*.*(..)) 

statt

execution(* mypackage.services.Service.*(..)) 
+0

versucht dies auch, aber es hat das Problem –

+0

nicht gelöst, wenn Sie Spring Boot keine Notwendigkeit, Abhängigkeiten, config.xml und @EnableAspectJAutoProxy (proxyTargetClass = true) in der Config-Klasse –

+0

Wenn ich die Abhängigkeiten entferne (zB spring-aop, aspectjrt), bekomme ich Kompilierungsfehler bei den @Aspect-, @AfterReturning- und @Before-Annotationen –

Verwandte Themen