2017-09-25 2 views
0

pom.xml Version Info Arbeit:Feder @Aspect kann nicht mit swagger2

  • springfox-swagger2: 2.5.0
  • Prahlerei-Kern: 1.5.10
  • springfox-Prahlerei-ui: 2.6 0,1
  • springboot: 1.5.3

I hat ein Projekt mit swagger2 und springboot.

Der Projektcode ohne @aspect funktioniert sehr gut. Der Code lautet wie folgt.

public interface TestApi { 
    WfExecution test(Long temp); 
} 


@Api(value = "TestAPI") 
@RequestMapping(value = "/test") 
@RestController 
public class TestApiImpl implements TestApi { 

    @Override 
    @RequestMapping(value = "/test") 
    @ApiOperation(value = "", notes = "", produces = MediaType.APPLICATION_JSON) 
    public WfExecution test(@ApiParam(value = "", required = true) @RequestParam(required = true, value = "temp") 
             Long temp) { 
     return new WfExecution(); 
    } 
} 

das richtige Ergebnis:

success picture

Aber wenn ich die Folge Code hinzufügen, der Prahlerei-ui zeigt nicht den Test-api-impl.

@Aspect 
@Component 
public class LoggerAop { 
    @Before("execution(* com.XXX.controller.impl.TestApiImpl.*(..))") 
    public void doBeforeAdvice(JoinPoint joinPoint){ 
      System.out.println("XXX"); 
    } 
} 

das Fehlerergebnis:

fail picture

Gibt es einen Konflikt zwischen Swagger und Feder AOP?

+0

Ich benutze Feder AOP mit Springfox. Hatte nie ein Problem. –

+0

In der WebUi habe ich festgestellt, dass es in WebUi eine Proxy-Klasse gibt. Die Methode entspricht der TestApi-Klasse. https://github.com/springfox/springfox/issues/2050 – egg

Antwort

0

@egg

ich Setup das ähnliche Projekt und stand vor einem gleiches Thema.

Nachdem die proxyTargetClass -Eigenschaft in @EnableAspectJAutoProxy Annotation wie folgt auf true festgelegt wurde, wurde das Problem behoben.

@EnableAspectJAutoProxy(proxyTargetClass=true)

Dieses Problem tritt nur auf, wenn wir die Schnittstelle für Controller verwenden.

Um die Verwendung dieser Eigenschaft EnableAspectJAutoProxy von Java Doc.

Benutzer kann die Art der Proxy steuern, die für {@code FooService} unter Verwendung der {@link #proxyTargetClass()} Attribut erstellt wird. Das Folgende aktiviert CGLIB-artige "Unterklasse" Proxies im Gegensatz zu dem standardmäßigen Schnittstellen-basierten JDK-Proxy-Ansatz.

+0

Es funktioniert! danke für Ihre Hilfe – egg

Verwandte Themen