티스토리 뷰

카테고리 없음

FlywayConnectionDetails 소개

행복[HappY] 2025. 3. 10. 14:55

FlywayConnectionDetails 개요

FlywayConnectionDetails는 Spring Boot 3.1부터 추가된 인터페이스로, Flyway의 데이터베이스 연결 정보를 제공하는 역할을 합니다.
이 인터페이스를 활용하면 Spring Boot 설정과 별개로 Flyway 전용 데이터베이스 연결을 구성할 수 있습니다.

기존에는 Flyway가 spring.datasource의 설정을 자동으로 사용했지만, 별도의 Flyway 데이터베이스를 사용할 경우 설정이 번거로웠습니다.
Spring Boot 3.1 이후부터는 FlywayConnectionDetails를 구현하여 Flyway 전용 설정을 분리할 수 있습니다.

 

 

 

1. 주요 역할

FlywayConnectionDetails의 역할은 다음과 같습니다.

  1. Flyway 전용 데이터베이스 연결 설정 제공
    • 애플리케이션이 사용하는 spring.datasource와 다른 데이터베이스에 마이그레이션을 적용할 수 있음
  2. 커스텀 데이터베이스 설정 가능
    • JDBC URL, 사용자명, 비밀번호 등을 별도로 설정할 수 있음
  3. 구성 방식 확장 가능
    • application.yml 또는 커스텀 구현체를 만들어 동적으로 연결 정보 설정 가능

 

 

 

2. 기본적인 사용 방법

1) 기본적인 Flyway 설정 (application.yml)

기본적으로 Flyway는 spring.datasource 설정을 자동으로 사용합니다.

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/main_db
    username: main_user
    password: main_password

  flyway:
    enabled: true

이 경우, Flyway는 spring.datasource의 설정을 그대로 사용하여 마이그레이션을 수행합니다.

 

2) Flyway 전용 데이터베이스 설정

하지만 Flyway가 애플리케이션과 다른 데이터베이스를 사용해야 하는 경우에는 spring.flyway.url을 설정해야 합니다.

spring:
  flyway:
    url: jdbc:mysql://localhost:3306/flyway_db
    user: flyway_user
    password: flyway_password

이 설정을 적용하면 Flyway는 flyway_db 데이터베이스를 사용하고, 애플리케이션은 main_db를 사용하게 됩니다.

 

 

 

3. FlywayConnectionDetails 인터페이스 구현

Spring Boot 3.1 이후에는 FlywayConnectionDetails 인터페이스를 직접 구현하여 Flyway 전용 연결 설정을 동적으로 제공할 수 있습니다.

import org.springframework.boot.autoconfigure.flyway.FlywayConnectionDetails;
import org.springframework.boot.jdbc.BasicJdbcConnectionDetails;
import org.springframework.stereotype.Component;

@Component
public class CustomFlywayConnectionDetails implements FlywayConnectionDetails {

    private final BasicJdbcConnectionDetails connectionDetails;

    public CustomFlywayConnectionDetails() {
        this.connectionDetails = new BasicJdbcConnectionDetails(
            "jdbc:mysql://localhost:3306/flyway_db",
            "flyway_user",
            "flyway_password"
        );
    }

    @Override
    public String getJdbcUrl() {
        return connectionDetails.getJdbcUrl();
    }

    @Override
    public String getUsername() {
        return connectionDetails.getUsername();
    }

    @Override
    public String getPassword() {
        return connectionDetails.getPassword();
    }
}

설명

  • FlywayConnectionDetails를 구현하여 Flyway 전용 데이터베이스 정보를 설정함
  • getJdbcUrl(), getUsername(), getPassword() 메서드를 오버라이드하여 JDBC 정보를 제공
  • BasicJdbcConnectionDetails를 사용하여 쉽게 JDBC 정보를 설정 가능

이제 Spring Boot는 FlywayConnectionDetails 구현체를 자동으로 감지하여 Flyway 전용 데이터베이스를 사용할 수 있습니다.

 

 

 

4. 기존 방식과의 차이점

설정 방식 설명 사용 가능 버전

spring.flyway.url 설정 application.yml에서 Flyway 전용 DB를 설정 Spring Boot 2.x ~
FlywayConnectionDetails 인터페이스 구현 Java 코드에서 Flyway DB 설정을 동적으로 관리 Spring Boot 3.1 ~

 

FlywayConnectionDetails를 사용하면 설정을 코드로 관리할 수 있어 동적인 환경에서도 유연하게 Flyway 연결을 변경할 수 있습니다.

 

 

 

5. 정리

  • FlywayConnectionDetails는 Spring Boot 3.1부터 제공되는 Flyway 전용 데이터베이스 설정 인터페이스입니다.
  • 기존에는 spring.flyway.url 설정을 사용했지만, 이제 코드 기반으로 설정을 커스터마이징할 수 있습니다.
  • 이를 통해 애플리케이션 데이터베이스와 Flyway 데이터베이스를 분리하여 운영할 수 있습니다.
  • BasicJdbcConnectionDetails를 활용하면 쉽게 JDBC 정보를 설정할 수 있습니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함