Kotlin
Beans and Configurations
Um bean é um objeto que é gerenciado pelo Spring (na realidade é pelo contêiner de inversão de controle (IoC) do Spring). Em outras palavras, é um objeto que é instanciado, configurado e gerenciado pelo Spring IoC Container. Os Beans são componentes fundamentais em uma aplicação Spring. Eles representam objetos que executam várias funções na aplicação, como serviços, controladores, repositórios, etc.
Um objeto é criado usando o @
, e todos eles são gerenciados pelo Spring. Já o @Bean
é criado dentro de um método e o Spring utilizará a instância retornada pelo método como um objeto gerenciado. Ou seja, o usar a anotação @Bean
em um método dentro de uma classe, estamos instruindo o Spring a usar o objeto retornado por esse método como um bean gerenciado pelo contêiner Spring IoC.
Normalmente a anotação @Configuration
é frequentemente usada para agrupar métodos @Bean
em uma classe dedicada à configuração do Spring, então quando colocamos a anotação @Bean
em um método dentro de uma classe anotada com @Configuration
, estamos essencialmente dizendo ao Spring que este método é responsável por criar e configurar um bean específico.
O objeto retornado por esse método será gerenciado pelo contêiner Spring IoC. Isso significa que o Spring cuidará do ciclo de vida desse objeto, incluindo sua criação, injeção de dependências (se houver), configuração e, eventualmente, destruição quando a aplicação for encerrada.
Os beans definidos dessa maneira são considerados beans "explícitos", pois sua criação e configuração são especificadas explicitamente no código-fonte do aplicativo.
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
@Configuration
class MeuBeanConfig {
@Bean
fun meuBean(): MeuBean {
return MeuBean() // Instanciando e configurando o objeto MeuBean
}
}
Neste exemplo, a classe MeuBeanConfig
é anotada com @Configuration
, indicando que é uma classe de configuração Spring. O método meuBean()
é anotado com @Bean
, indicando que ele produz um bean chamado meuBean
. O método retorna uma instância de MeuBean
, que será gerenciada pelo contêiner Spring IoC.
Swagger
O Swagger é uma ferramenta popular para criar, documentar e consumir APIs RESTful. Ele fornece uma maneira fácil de descrever a estrutura da sua API, permitindo que desenvolvedores visualizem e interajam com os endpoints da API sem a necessidade de acessar o código-fonte.
Primeiro nas dependências, precisamos adicionar: io.springfox:springfox-swagger2:2.9.2
e io.springfox:springfox-swagger-ui:3.0.0
No Maven ficaria assim:
<dependencies>
...
<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>
</dependencies>
Depois é só importar algumas libs:
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
import springfox.documentation.swagger2.annotations.EnableSwagger2
import springfox.documentation.spring.web.plugins.Docket
@Configuration
@EnableSwagger2
class SwaggerConfig {
@Bean
fun api(): Docket {
return Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("net.mestwin.mongodbrestapidemo.controller")) // Substitua pelo pacote base do seu projeto
.paths(PathSelectors.any())
.build()
}
}
Fontes
https://blog.mestwin.net/swagger-documentation-for-your-spring-boot-api-with-springfox/