2017-09-25 183 views
0

pom.xml的版本信息工作:春天@Aspect不能swagger2

  • springfox-swagger2:2.5.0
  • 招搖核心:1.5.10
  • springfox-招搖的用戶界面:2.6 0.1
  • springboot:1.5.3

我有swagger2和springboot項目。

沒有@Aspect的項目代碼工作得很好。代碼如下所示。

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(); 
    } 
} 

正確的結果:

success picture

但當我增加以下代碼,招搖的用戶界面不顯示測試API-implement執行。

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

的錯誤結果:

fail picture

有招搖和Spring AOP之間的衝突?

+0

我使用Springfox的spring AOP。從來沒有任何問題。 –

+0

在webUi中,我發現webUi中有一個代理類。它的方法與TestApi類的方法相同。 https://github.com/springfox/springfox/issues/2050 – egg

回答

0

@egg

我設置了類似的項目,並面臨同樣的問題。

如下所示,在@EnableAspectJAutoProxy註釋中將proxyTargetClass屬性設置爲true後,問題得到解決。當我們正在使用的控制器接口只發生

@EnableAspectJAutoProxy(proxyTargetClass=true)

此問題。

引用Java屬性中的EnableAspectJAutoProxy屬性的用法。

用戶可以控制該被使用的 {@link #proxyTargetClass()} {屬性@code FooService接口}創建的代理的類型。與默認的基於接口的JDK代理方法相反,以下代碼實現了CGLIB風格的'子類' 代理。

+0

它的工作原理!謝謝你的幫助 – egg