티스토리 뷰

728x90

스프링부트 프레임워크에서 flyway 사용법은 간단하다. 그런데 나는 spring 설정 방법에 대해서 잘 알지 못하기 대부분의 설정이 xml로 되어있는 전자정부프레임워크에서 flyway를 사용하기 위해..개고생을 했다..거의 하루를 버렸다...

 

설정을 변경해주어야 할 파일은 두가지이다.

1. datasource 관련 설정파일 2. mybatis 관련 설정파일

우선 제일 먼저 flyway 라이브러리를 추가해주자.

 

1️⃣ flyway maven 추가

- springboot framework에서는 version을 명시하지 않아도 되었지만, 전자정부프레임워크에서는 버전 명시를 해주지 않으면 내가 사용하고 있는 mariadb 버전을 지원하지 않는다고 나온다.(공식 홈페이지에서는 분명 지원한다고 했는데😓 )그래서 오류가 난다면 버전 명시를 해주는 것을 추천한다. 

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

2️⃣ datasource 파일에 flyway 관련 설정 추가

 - flyway는 기본적으로 resource-db-magration 디렉토리를 스캔하는데 위치를 변경해주고 싶은 경우 property를 추가해주면 된다. 

<bean id="flyway" class="org.flywaydb.core.Flyway" depends-on="flywayConfiguration" init-method="migrate">
  <constructor-arg ref="flywayConfiguration"/>
</bean>

<bean id="flywayConfiguration" class="org.flywaydb.core.api.configuration.ClassicConfiguration" depends-on="설정한 데이터소스 bean id">
  <property name="dataSource" ref="설정한 데이터소스 bean id"/>
  <property name="locations" value="flyway가 스캔할 위치 설정"/>
  <property name="ignoreMissingMigrations" value="${flyway.ignoreMissingMigrations:false}"/>
  <property name="ignoreFutureMigrations" value="${flyway.ignoreFutureMigrations:true}"/>
  <property name="validateOnMigrate" value="${flyway.validateOnMigrate:true}"/>
  <property name="outOfOrder" value="${flyway.outOfOrder:false}"/>
</bean>

3️⃣ mybatis 관련 설정파일 변경

- depends-on에 flyway를 추가해준다.

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" depends-on="flyway">
  <property name="dataSource" ref="dataSource" />
  <property name="configLocation" value="classpath:/egovframework/sqlmap/sql-mapper-config.xml" />
  <property name="mapperLocations" value="classpath:/egovframework/sqlmap/mappers/**/*.xml" />
</bean>

 

 

사실, 엄청 간단하게 끝날 수 있는 것이었는데, 내가 설정하는 방법을 몰라 가이드를 봐도...이해를 못했었다...지금 보니 이해가 되는...

https://flywaydb.org/documentation/usage/api/

 

Homepage - Flyway

Version control for your database. Robust schema evolution across all your environments. With ease, pleasure, and plain SQL.

flywaydb.org

다만 공식홈페이지에서 version을 8.5.4로 명시했지만....나는 적용한 경우 오류가 났기 때문에

아래 페이지에서 지원하는 데이터베이스인데도 불구하고 지원하지 않는다는 데이터베이스라고 나온다면 버전을 한번 의심해보길 추천한다.

mariaDB의 경우artifactId에 flyway-mysql을 써야한다고 써있었는데 왜인지 모르겠는데 라이브러리를 찾지 못했고, flyway-core를 사용해도 되는 것 같다.(스프링부트프레임워크에서는 전혀 오류가 안난다) 

 

▶️ flyway 에서 지원하는 데이터베이스

https://flywaydb.org/documentation/database/mariadb

​ 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함