Programming On Mars Logo
  • Início
  • Artigos
  • Laboratórios
Programming On Mars Logo
  • Início
  • Artigos
  • Laboratórios

  • Andre Lucas
  • Mon Jul 22 2024

Hands on — Springboot + Flyway

Antes de continuar lendo, certifique-se de ter lido os fundamentos sobre scripts de migração no artigo Migrações de Banco de Dados para Iniciantes ou você tem alguns conhecimentos sobre este tópico.

Techstack

  • Springboot 3.0
  • Flyway
  • PostgreSQL

Primeiro, precisamos adicionar as dependências.

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>9.8.3</version>
</dependency>

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Configuração do Datasource

spring:
  datasource:
    hikari:
      jdbc-url: jdbc:postgresql://localhost:54322/wallet-transaction
      pool-name: wallet-transaction-hikari-pool
      driver-class-name: org.postgresql.Driver
      username: wallet-transaction
      password: wallet-transaction

# application.yml
@EnableJpaRepositories(basePackages = {"com.crypto.coinwallet.andrelucas.dataprovider"})
@Configuration
@EnableTransactionManagement
public class DataSourceConfiguration {

    @Bean
    @ConfigurationProperties(value = "spring.datasource.hikari")
    DataSource dataSource(){
        return DataSourceBuilder.create() // DataSourceBuilder<capture of ?>
            .type(HikariDataSource.class) // DataSourceBuilder<HikariDataSource>
            .build();
    }
}

DataSourceConfiguration.java

Configuração do Flyway

Por padrão, os scripts de migração do flyway estão na pasta db/migrations

Flyway Folder Structure

Mas, se você quiser alterar, você só precisa adicionar esta linha no arquivo application.yml

flyway:
  locations: db/migration

Outra forma é configurar o flyway programaticamente

@Bean(name = "managerFlyway")
public Flyway flyway(@Qualifier("clientDataSource") final DataSource dataSource){
    final var configuration = new ClassicConfiguration();
    configuration.setDataSource(dataSource);
    configuration.setLocations(new Location(descriptor: "classpath:flyway_client"));

    final Flyway flyway = new Flyway(configuration);
    flyway.migrate();

    return flyway;
}

Neste caso, o bean flyway recebe o bean de configuração do data source, e outro caminho onde estão os scripts de migração.

Flyway Migration Files

Referências

  1. https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
  2. https://flywaydb.org/
  3. https://martinfowler.com/articles/evodb.html

Código Completo

https://github.com/andrelucasti/micro-coin-wallet

Tags:
Spring BootHands OnFlywaySQL
  • Política de Privacidade
  • Termos de Serviço
  • Contato
© 2025 Programming On Mars. Todos os direitos reservados.