⚡ 개요
래거시 APP 기준으로 신규 개발을 해야 되는 내용이 있어서 이미 쿼리가 다 짜져 있기 때문에 JPA가 아닌 mybatis를 사용해서 신규 개발을 했던 내용을 정리해놓으려고 한다. (신규로 구축하려니까 생각보다 헤맴..)
내용 중 기본적인 내용과 다른 부분이 있다면 DB를 두 개를 사용해서 연동이 들어갔다는 점이다. (mssql, oracle)
⚡ 기술 스택
- Spring Boot 3.0.5
- JAVA 17
- MSSQL
- Oracle
- Mybatis
⚡ 사용 방법 정리
전반적인 사용 방법에 대해서 정리하기보다는 내가 좀 버벅거렸던 부분에 대해서 사용 방법을 정리하고 넘어가려고 한다.
DatabaseConfig 설정
데이터 베이스를 관리할 때 Hikari Datasource (2.0부터는HikariCP가 기본)를 통해서 정보를 설정을 하려고 했고 두 개의 데이터 베이스를 같이 사용을 해야 하다보니 설정하는 방법이 좀 달랐었다.
두개의 데이터 베이스의 정보를 설정하는 과정에서 문제가 발생했다. 동일한 타입을 가진 bean 객체가 두개 있다면 스프링에서 어떤 bean을 주입해야 할지 알 수 없어서 스프링 컨테이너를 초기화하는 과정에서 Exception이 발생을 하게 된다.
이때 사용했던 어노테이션이 @Primary, @Qualifier이다.
@Primary : 하나의 타입에 빈 객체가 여러 개인 경우 그중 우선순위를 갖는 빈이라는 것을 지정할 수 있도록 한다.
@Qualifier : 사용할 의존 객체를 선택할 수 있도록 해준다.
위의 이미지와 같이 나는 두 개의 bean 설정을 따로 하고 의존성 주입을 받았다.
또한 SessionFactory를 생성할 때도 위와 동일한 방법으로 생성해서 사용하였다.
클래스 내에서 의존성 주입을 받아서 사용하면 된다.
이때 @Autowired 대신 생성자 주입을 사용해서 의존성 주입을 받는 것이 좋다고 한다.
(편리하단 것 말고는 장점이 없어서 스프링 4.3부터는 사용하지 않는 것을 권장한다고 한다.)
스프링 팀에서는 항상 생성자 주입을 사용하는 것을 권장하지만 생성자 주입으로 작성했을 때 번거로움으로 인해서 @RequiredArgsConstructor 어노테이션을 선언해서 생성자 주입을 받았다.
mybatis 설정
yml에 해당 mapper 경로를 지정해서 사용한다.
그리고 SessinFactory Bean을 생성 시, resolver에 경로를 알려주면 된다.
⚡ 생각
Spring Boot + mybatis를 사용해서 신규 프로젝트를 구축하면서 래거시 시스템 쪽 설정을 했던 부분에 대해서 다시 한번 보게 되었다. 확실히 설정하는 부분이 복잡하며 중간중간 멈칫하는 부분도 존재했다....(😅😅)
'Spring' 카테고리의 다른 글
[Linux] JAVA에서 SFTP 접속 관련 이슈 사항 내용 정리 (0) | 2023.06.10 |
---|---|
[Spring Boot] QueryDsl Qclass 에 대한 내용 정리 (0) | 2023.04.23 |
[Spring Boot] application.yml 설정 파일 우선순위에 대한 내용 정리 (1) | 2023.03.07 |
[Spring Boot] 콘솔에 출력된 배너 변경하기 (0) | 2023.02.12 |
[JPA] QueryDSL에서 서브 쿼리 사용 정리 (0) | 2023.01.29 |