如何在无Spring Boot的Spring 4.0.0.RELEASE项目中集成Swagger UI?
Spring 4.0.0.RELEASE 集成 Swagger UI 步骤
适配Spring 4.0.x的Swagger版本是Swagger 1.3.x,以下是具体集成步骤:
1. 引入依赖(Maven)
在pom.xml中添加Swagger核心和UI的依赖:
<dependencies> <!-- Swagger Core --> <dependency> <groupId>com.wordnik</groupId> <artifactId>swagger-core</artifactId> <version>1.3.12</version> </dependency> <!-- Swagger SpringMVC --> <dependency> <groupId>com.wordnik</groupId> <artifactId>swagger-springmvc</artifactId> <version>1.0.2</version> </dependency> <!-- Swagger UI --> <dependency> <groupId>com.wordnik</groupId> <artifactId>swagger-ui</artifactId> <version>1.3.12</version> <type>war</type> </dependency> </dependencies>
2. 配置Swagger核心
创建Java配置类(或XML配置),开启Swagger并配置API信息:
import com.wordnik.swagger.config.ConfigFactory; import com.wordnik.swagger.config.ScannerFactory; import com.wordnik.swagger.config.SwaggerConfig; import com.wordnik.swagger.jaxrs.config.DefaultJaxrsScanner; import com.wordnik.swagger.jaxrs.listing.ApiDeclarationProvider; import com.wordnik.swagger.jaxrs.listing.ResourceListingProvider; import com.wordnik.swagger.model.ApiInfo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SwaggerConfig { @Bean public ResourceListingProvider resourceListingProvider() { return new ResourceListingProvider(); } @Bean public ApiDeclarationProvider apiDeclarationProvider() { return new ApiDeclarationProvider(); } @Bean public void initSwagger() { ConfigFactory.setConfig(new SwaggerConfig() { @Override public ApiInfo apiInfo() { return new ApiInfo( "项目API文档", "Spring 4.0.x集成Swagger的API接口说明", "项目服务条款地址", "contact@your-domain.com", "MIT License", "项目许可证地址" ); } @Override public String basePath() { return "/your-app-context"; // 替换为你的项目上下文路径 } }); ScannerFactory.setScanner(new DefaultJaxrsScanner()); } }
如果用XML配置,在spring-servlet.xml中添加:
<bean class="com.wordnik.swagger.jaxrs.listing.ResourceListingProvider"/> <bean class="com.wordnik.swagger.jaxrs.listing.ApiDeclarationProvider"/> <bean id="swaggerConfig" class="com.wordnik.swagger.config.SwaggerConfig"> <property name="apiInfo"> <bean class="com.wordnik.swagger.model.ApiInfo"> <constructor-arg value="项目API文档"/> <constructor-arg value="API接口说明"/> <constructor-arg value="项目服务条款地址"/> <constructor-arg value="contact@your-domain.com"/> <constructor-arg value="MIT License"/> <constructor-arg value="项目许可证地址"/> </bean> </property> <property name="basePath" value="/your-app-context"/> </bean> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="com.wordnik.swagger.config.ConfigFactory"/> <property name="targetMethod" value="setConfig"/> <property name="arguments" ref="swaggerConfig"/> </bean> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="com.wordnik.swagger.config.ScannerFactory"/> <property name="targetMethod" value="setScanner"/> <property name="arguments"> <bean class="com.wordnik.swagger.jaxrs.config.DefaultJaxrsScanner"/> </property> </bean>
3. 配置Swagger UI静态资源
非Spring Boot项目需配置静态资源映射,让Swagger UI文件可访问:
- Java配置方式:
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/1.3.12/"); } }
- XML配置方式:
<mvc:resources mapping="/swagger-ui/**" location="classpath:/META-INF/resources/webjars/swagger-ui/1.3.12/"/>
4. 给Controller添加Swagger注解
为需要生成文档的接口添加注解:
import com.wordnik.swagger.annotations.Api; import com.wordnik.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @Api(value = "示例接口", description = "测试用API接口") @RestController public class SampleController { @ApiOperation(value = "获取Hello信息", notes = "返回简单的Hello字符串") @GetMapping("/hello") public String hello() { return "Hello Swagger!"; } }
5. 验证访问
启动项目后,访问地址:http://localhost:8080/your-app-context/swagger-ui/index.html,即可查看生成的API文档。
注意事项
- 确保项目已开启Spring MVC注解驱动(
<mvc:annotation-driven/>或@EnableWebMvc) - 若有拦截器,需排除Swagger相关路径:
/swagger-ui/**、/api-docs/** - 遇到依赖冲突时,可通过
dependencyManagement锁定Swagger相关依赖版本
内容的提问来源于stack exchange,提问作者akshita
相关产品推荐
相关产品推荐

