SpringFox Descontinuado. Saiba Como Migrar Para o SpringDoc
- #Spring Boot / Spring Framework
- #Java
SpringFox
O SpringFox foi utilizado por bastante tempo para documentar API's Spring utilizando o Swagger, no entanto, sua última versão foi lançada em julho de 2020.
Devido à incompatibilidade com as versões mais recentes do Spring Boot, a comunidade vem adotando outras bibliotecas, como o SpringDoc.
Nesse artigo, você aprenderá de forma prática como migrar uma API para o SpringDoc utilizando o Spring na versão 3 ou superior.
Fazendo a Migração
Utilizaremos como exemplo o projeto ministrado pelo professor Gleyson Sampaio no curso "Criando uma API REST Documentada com Spring Web e Swagger", disponível aqui mesmo na plataforma da DIO.
Atualize a versão do Spring Boot Starter para a 3.0.0 ou superior.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Atualize também a versão do Java para 17 ou superior, pois o Spring Boot 3 tem esse requisito como obrigatório.
<properties>
<java.version>17</java.version>
</properties>
Atenção: Lembre de atualizar o Java em sua IDE.
No IntelliJ vá em File > Project Structure... > Project > SDK e altere a versão do Java para 17.
Remova as duas dependências do SpringFox.
<!-- SWAGGER DOCUMENTACAO -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
Adicione as dependências do SpringDoc na versão 2 ou superior.
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-common</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.0</version>
</dependency>
Na classe “SwaggerConfig”, apague a anotação "@EnableSwagger2"
@Configuration
public class SwaggerConfig {
Remova os métodos “informacoesApi()” e "contato()"
private Contact contato() {
return new Contact(
"Seu nome",
"http://www.seusite.com.br",
"voce@seusite.com.br");
}
private ApiInfoBuilder informacoesApi() {
ApiInfoBuilder apiInfoBuilder = new ApiInfoBuilder();
apiInfoBuilder.title("Title - Rest API");
apiInfoBuilder.description("API exemplo de uso de Springboot REST API");
apiInfoBuilder.version("1.0");
apiInfoBuilder.termsOfServiceUrl("Termo de uso: Open Source");
apiInfoBuilder.license("Licença - Sua Empresa");
apiInfoBuilder.licenseUrl("http://www.seusite.com.br");
apiInfoBuilder.contact(this.contato());
return apiInfoBuilder;
}
E adicione o bean "openAPI()" que fará a função dos métodos removidos.
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.info(new Info()
.title("Title - Rest API")
.description("API exemplo de uso de Springboot REST API")
.version("1.0")
.termsOfService("Termo de uso: Open Source")
.license(new License()
.name("Apache 2.0")
.url("http://www.seusite.com.br")
)
).externalDocs(
new ExternalDocumentation()
.description("Seu nome")
.url("http://www.seusite.com.br"));
}
Por fim, remova o bean "detalheApi()"
@Bean
public Docket detalheApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2);
docket
.select()
.apis(RequestHandlerSelectors.basePackage("com.dio.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(this.informacoesApi().build())
.consumes(new HashSet<String>(Arrays.asList("application/json")))
.produces(new HashSet<String>(Arrays.asList("application/json")));
return docket;
}
E adicione a seguinte propriedade no arquivo "application.properties"
springdoc.packagesToScan=com.dio
Conclusão
Com os passos acima será possível fazer a migração do SpringFox para o SpringDoc. O repositório com a migração está disponível aqui.
Muito obrigado!