Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions docs/migrating-from-springfox.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Migrating from SpringFox Swagger 2

+ Remove springfox and swagger 2 dependencies. Add `springdoc-openapi-ui` dependency instead.
+ Replace swagger 2 annotations with swagger 3 annotations (it is already included with `springdoc-openapi-ui` dependency).
Package for swagger 3 annotations is `io.swagger.v3.oas.annotations`.

- `@ApiParam` -> `@Parameter`
- `@ApiOperation` -> `@Operation`
- `@Api` -> `@Tag`
- `@ApiImplicitParams` -> `@Parameters`
- `@ApiImplicitParam` -> `@Parameter`
- `@ApiIgnore` -> `@Parameter(hidden = true)` or `@Operation(hidden = true)` or `@Hidden`
- `@ApiModel` -> `@Schema`
- `@ApiModelProperty` -> `@Schema`


+ If you have **multiple** `Docket` beans replace them with `GroupedOpenApi` beans.

Before:
```java
@Bean
public Docket publicApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("org.github.springshop.web.public"))
.paths(PathSelectors.regex("/public.*"))
.build()
.groupName("springshop-public")
.apiInfo(apiInfo());
}

@Bean
public Docket adminApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("org.github.springshop.web.admin"))
.paths(PathSelectors.regex("/admin.*"))
.build()
.groupName("springshop-admin")
.apiInfo(apiInfo());
}
```
Now:
```java
@Bean
public GroupedOpenApi publicApi() {
return GroupedOpenApi.builder()
.setGroup("springshop-public")
.pathsToMatch("/public/**")
.build();
}

@Bean
public GroupedOpenApi adminApi() {
return GroupedOpenApi.builder()
.setGroup("springshop-admin")
.pathsToMatch("/admin/**")
.build();
}
```
If you have **only one** `Docket` -- remove it and instead add properties to your `application.properties`:
```properties
springdoc.packagesToScan=package1, package2
springdoc.pathsToMatch=/v1, /api/balance/**
```
+ Add bean of `OpenAPI` type. See example:
```java
@Bean
public OpenAPI springShopOpenAPI() {
return new OpenAPI()
.info(new Info().title("SpringShop API")
.description("Spring shop sample application")
.version("v0.0.1")
.license(new License().name("Apache 2.0").url("http://springdoc.org")))
.externalDocs(new ExternalDocumentation()
.description("SpringShop Wiki Documentation")
.url("https://springshop.wiki.github.org/docs"));
}
```