티스토리 뷰
스프링부트 프레임워크에서 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/
다만 공식홈페이지에서 version을 8.5.4로 명시했지만....나는 적용한 경우 오류가 났기 때문에
아래 페이지에서 지원하는 데이터베이스인데도 불구하고 지원하지 않는다는 데이터베이스라고 나온다면 버전을 한번 의심해보길 추천한다.
mariaDB의 경우artifactId에 flyway-mysql을 써야한다고 써있었는데 왜인지 모르겠는데 라이브러리를 찾지 못했고, flyway-core를 사용해도 되는 것 같다.(스프링부트프레임워크에서는 전혀 오류가 안난다)
▶️ flyway 에서 지원하는 데이터베이스
https://flywaydb.org/documentation/database/mariadb
'백엔드 > database' 카테고리의 다른 글
[mysql] union all로 두 테이블의 데이터를 가지고 올 때 정렬(두 데이터의 시간이 같을 때) (0) | 2022.06.29 |
---|---|
mybatis selectKey 사용하기 (0) | 2022.06.21 |
mysql에서 변수 사용하기 (0) | 2022.06.20 |
서브쿼리를 조인으로 변경하기(mysql, 스칼라 서브쿼리) (0) | 2022.06.20 |
[mySql] json값 변경하기 JSON_REPLACE() (0) | 2022.02.03 |
- Total
- Today
- Yesterday
- react
- 전자정부프레임워크
- java 코테
- 현대코테
- Kubernetes
- 리액트
- Spring
- Linux
- 현대오토에버
- 쿠버네티스
- 톰캣
- Docker
- 현대
- mysql
- softeer
- 도커
- 오토에버코테
- 아파치카프카
- springboot
- 코테
- softeer java
- 자바코테
- centos
- 스프링
- java
- 코딩테스트
- javascript
- 자바스크립트
- tomcat
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |