pom.xml版本信息:
springfox-swagger2:2.5.0
挥杆核心:1.5.10
springfox-swagger-ui:2.6.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();
}
}
正确的结果:
但是,当我添加以下代码时,swagger-ui不会显示test-api-impl。
@Aspect
@Component
public class LoggerAop {
@Before("execution(* com.XXX.controller.impl.TestApiImpl.*(..))")
public void doBeforeAdvice(JoinPoint joinPoint){
System.out.println("XXX");
}
}
错误结果:
昂首阔步和春季AOP之间有冲突吗?
最佳答案
@蛋
我设置了类似的项目,并遇到了同样的问题。
如下所示,在@EnableAspectJAutoProxy批注中将proxyTargetClass属性设置为true后,问题得到解决。@EnableAspectJAutoProxy(proxyTargetClass=true)
仅当我们将接口用于控制器时,才会发生此问题。
引用Java doc中该属性EnableAspectJAutoProxy的使用。
用户可以使用以下方法控制为{@code FooService}创建的代理类型
{@link #proxyTargetClass()}属性。以下启用CGLIB样式的“子类”
代理,而不是默认的基于接口的JDK代理方法。