在eclipse中添加swagger-springmvc依赖项时的圆形视图路径错误

时间:2014-07-31 08:48:22

标签: eclipse spring swagger

我有一个使用spring(ver 4.0.1)REST构建的Web服务应用程序。我为不同的资源创建了不同的项目,比如A& B和一个常见的动态Web项目C.我使用gradle作为构建工具。项目A& B被定义为项目C中的依赖项。我已经集成了swagger-springmvc:0.8.5用于REST API文档。我正在使用基于Java的弹簧配置和我的弹簧和弹簧。 swagger配置文件是项目C的一部分。

当我只在项目C中添加swagger-springmvc依赖时,它通过eclipse构建并正常工作(我通过eclipse运行tomcat)。我可以看到我的REST API文档,用于项目A&的所有资源。乙

但是,如果我在任何项目A或B中添加swagger-springmvc依赖项(在我的资源或模型类上添加文档),它构建正常但在tomcat通过eclipse运行时会产生循环路径错误。

如果我想访问我的资源' / authenticate'以下是错误(' / authenticate'返回json类型对象):

avax.servlet.ServletException: Circular view path [authenticate]: would dispatch back to the current handler URL** [/cloudservice/authenticate] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:292)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:214)
...

但是打电话给资源' / api-docs'工作正常,我可以看到资源列表。

有一点需要注意,如果我使用命令行中的gradle build构建我的应用程序并将war文件复制到tomcat目录中,那么一切正常。

我使用的是JDK 1.7。设置也是eclipse使用JDK 1.7。

我在我的webapp配置文件中添加了所需的注释:

@Configuration
@EnableWebMvc
@EnableSwagger
@ComponentScan("package")
@Profile
public class WebAppConfig extends WebMvcConfigureAdapter {
    public void addInterceptors... {
    }
}

以下是swagger配置文件:

@Configuration
@EnableWebMvc
@EnableSwagger
@ComponentScan("package")
@Profile
public class SwaggerConfig {

    @Bean
    public SwaggerSpringMvcPlugin customImplementation() {
        return new SwaggerSpringMvcPlugin(springSwaggerConfig);
    }
}

在gradle构建文件中添加了Swagger依赖项:

dependencies {
    compile "com.mangofactory:swagger-springmvc:0.8.5"
}

以下是资源' / authenticate':

的控制器类代码
@RestController
@Api(value = "authenticate", description = "authenticate")
public class AuthenticationResource {

    @RequestMapping(value = "/authenticate", method = RequestMethod.POST)
    public MyObj authenticateUser(@RequestHeader(value="Authorization") String authString {
        ....
        ....
    }
}

即使我从资源类中删除了@Api注释,但是在gradle构建文件中添加了swagger-springmvc依赖项,也会出现问题。

1 个答案:

答案 0 :(得分:0)

从其他论坛获得解决方案。如果有人遇到同样的问题,请在这里分享。

在我的日食项目A& B(资源和模型类),我只是使用swagger注释。所以,我只需要添加对swagger-annotations的依赖,而不是其他招摇罐。我删除了对swagger-springmvc的依赖(反过来依赖于其他jar)并添加了swagger-annotations。

dependencies {
    compile "com.wordnik:swagger-annotations:1.3.5"
}

这解决了这个问题。