Não temos como negar que o ecossistema do Spring Framework é gigante, junto do Spring Boot temos muitos facilitadores, conseguimos desenvolver Web APIs com muita facilidade, a partir do starter conseguimos facilmente criar uma aplicação Spring, também temos a CLI para fazer isso, porém vamos usar o starter. Criamos o projeto adicionando as seguintes dependências:
Feito isso, criamos o projeto, e abrimos ele no nosso editor preferido, vamos trabalhar adicionar um docker-compose
para facilitar nossa vida.
version: '3'
services:
database:
image: postgres:15-alpine
container_name: crud-database
environment:
POSTGRES_DB: crud
POSTGRES_USER: crud
POSTGRES_PASSWORD: crud
ports:
- 5432:5432
Vamos mudar o application.properties
para application.yaml
e vamos adicionar as configurações de conexão com o banco de dados.
spring:
datasource:
url: jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5432}/${DB_NAME:crud}
username: ${DB_USER:crud}
password: ${DB_PASS:crud}
jpa:
hibernate:
ddl-auto: update
Definimos as variáveis de ambiente e também valores padrão para caso elas não existam no ambiente, note que definimos os valores para localhost
, e o usuário e banco do docker-compose
. Feito isso vamos criar duas models.
@Entity
@Getter
@Setter
@ToString
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
private String name;
}
...
@Entity
@Getter
@Setter
@ToString
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
private String name;
@NotNull
@PositiveOrZero
private BigDecimal price;
@NotNull
@ManyToOne
@JoinColumn(name = "category_id")
private Category category;
}
Também criamos os repositories.
@RestResource
public interface CategoryRepository extends JpaRepository<Category, Long>{
}
...
@RestResource
public interface ProductRepository extends JpaRepository<Product, Long> {
}
Também vamos adicionar a dependencia OpenApi
para termos um swagger
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
Acessando http://localhost:8080/swagger-ui/index.html conseguimos acessar o swagger e ver todos os endpoints do CRUD já criados, inclusive implementando o HATEOS.
Beleza, mas para o que eu vou usar isso?
Para POCs que precisam ser criadas rápidamente, também podemos usar de cache, etc. É um mundo de possibilidades
Top comments (0)