Framework/Spring
-
최근 약 3만건의 데이터를 저장하는 일이 있었습니다. 이번 포스팅에서는 MyBatis로 대량 데이터 저장할 때 효과적인 방법에 대해 알아보겠습니다. 테스트 환경Spring BootJDK11MyBatisOracle대량의 데이터를 저장해야할 때 단건씩 저장하면 매우 많은 시간을 소요하게 됩니다. 때문에 보통 Bulk Insert를 통해 저장합니다.Oracle에서 Bulk Insert시에 사용할 수 있는 쿼리는 2가지로 볼 수 있습니다. INSERT ALLINSERT ALL은 여러 테이블에 동시에 데이터를 입력할 때 사용할 수 있는 구문입니다.INSERT ALL INTO [TABLE] (col1, col2) VALUES ('value1','value2') INTO [TABLE] (col1, col..
[Spring Boot]대량 데이터 저장하기 2024. 10. 17. -
최근 이직한 곳에서는 Oracle DB를 사용하고 있었습니다.오랜만에 예전 기억도 되새길겸 연동 과정을 기록에 남겨봤습니다. 회사 환경과 동일하게 맞추기 위해 Spring Boot 환경에서 외부 톰캣을 사용했고, JNDI를 통해 DB 리소스를 가져왔습니다. DB연결에는 ojdbc를 이용했고, MyBatis 연결까지의 과정을 공유합니다. 테스트 환경Spring Boot 2.7.5JDK 1.8ojdbc8MavenMyBatis1. 의존성 주입Maven repository 접속해서 아래 의존성을 추가합니다. org.springframework.boot spring-boot-starter-data-jdbc org.apache.commons commons-dbcp2 org.mybatis...
[Spring Boot]Oracle DB 연결하기 2024. 9. 2. -
최근 Spring Security 설정을 하며 발견한 오류 입니다.해당 오류는 Spring Security의 AuthenticationProvider를 구현하며 메소드를 Overried하여 그대로 사용하는 경우 발생할 수 있습니다. AuthenticationProvider에는 authenticate, supports 두 메소드가 존재합니다.인터페이스 상속 후 자동으로 Overried를 하게 되면 supports 메소드의 리터값은 false로 고정되어 있습니다. public interface AuthenticationProvider { /** * Performs authentication with the same contract as * {@link org.springframework.security..
[Error]Spring Security authenticate 302 2024. 9. 2. -
최근 개발 중인 앱에 비밀번호 재설정 기능을 추가하게 되었습니다.앱에서 서버로 비밀번호 재설정 요청을 하면 비밀번호 랜덤 설정 후 메일 전송 로직을 실행하게 됩니다. 이 때, 앱에서는 메일 전송이 완료되기까지 기다릴 필요가 없기 때문에 비동기로 작동할 수 있게 처리했습니다. 오늘은 Spring Boot에 @Async를 이용한 비동기 처리를 알아보겠습니다.테스트 환경Spring Boot 2.7.5JDK 1.8Gradle비동기 처리 없이 비밀번호 재설정을 실행했을 때의 모습입니다. 메일 발송까지 기다리다보니 비밀번호 재설정은 되었음에도 메일 발송 속도에 따라 3~5초 정도의 딜레이가 추가되는 것을 확인할 수 있었습니다.*메일 발송으로 javax.mail 라이브러리를 사용하고 있고 Gmail STMP가 설정되..
[Spring Boot]@Async로 비동기 처리하기 2024. 7. 18. -
최근 만든 앱에 푸쉬 기능을 추가할 일이 생겨 Spring Boot로 구축된 서버에 Firebase를 적용했습니다.이번 포스팅에서는 Firebase Admin SDK를 이용해 푸쉬를 보내는 방법을 알아보겠습니다. 이외에도 FCM를 이용한 글이 있으니 참고해 주세요.Node를 이용한 FCM PushFlutter FCM 설정하기 ※ 테스트 환경Spring Boot 2.7.5JDK 1.8Gradle1. Firebase Admin SDK 다운로드파이어베이스 접속 후 Admin SDK를 다운받습니다. 다운받은 파일을 resousrces 디렉토리에 저장합니다. 2. 의존성 추가푸쉬를 위해 firebase-admin을 추가합니다.build.gradle implementation group: 'com.googl..
[Spring Boot]Firebase Admin SDK를 이용해 푸쉬 보내기 2024. 7. 4. -
이미지 파일을 Multipartfile로 변환하거나 base64 데이터를 파일로 변환하는 방법을 알아보겠습니다.※ 테스트 환경Spring Boot 2.7.5JDK 11Gradle1. 의존성 추가build.gradle// https://mvnrepository.com/artifact/org.apache.tika/tika-coreimplementation 'org.apache.tika:tika-core:2.9.1'// https://mvnrepository.com/artifact/org.springframework/spring-mocktestImplementation 'org.springframework:spring-mock:2.0.8'// https://mvnrepository.com/artifact/or..
[Spring Boot]이미지 파일 변환, base64 to multipartfile 2024. 4. 18. -
작년에 DB Replication을 통해 리더/라이터 인스턴스를 분리하는 작업을 하고 MySQL을 Aurora MySQL로 이전한 경험이 있습니다. 오늘은 Spring Boot에서 Aurora MySQL(또는 MySQL) 의 이중화 방법에 대해 알아보겠습니다. ※ 테스트 환경Spring Boot 2.7.5JDK 11AWS Aurora MySQL 8.0MyBatisDB Replication 사용 이유DB Replication은 데이터베이스 이중화 방법으로써 DB 서버의 부하를 방지하기 위해 사용합니다.replication은 일반적으로 읽기/쓰기 작업을 구분해 데이터베이스 구조를 나누는 방법이 있습니다. 하나의 Writer(Master) 인스턴스를 두고 여러 개의 Reader(Slave) 인스턴스를 구성하는..
[Spring Boot]DB Replication 설정(Aurora MySQL) 2024. 4. 8. -
오랜만에 알림톡을 다시 구현할 일이 생겼는데요.연동 방법을 포스팅으로 남겨도 좋을 것 같아 내용을 정리해봤습니다.알림톡 사용을 위해서 NHN Notification - KakaoTalk Bizmessage 서비스를 사용했으며, 발신 프로필이 등록되어야 테스트할 수 있습니다. ※ 테스트 환경Spring Boot1. 알림톡 템플릿 등록알림톡 전송시 사용될 템플릿이 등록되어야 합니다. NHN 접속 후 알림톡 - 템플릿 관리로 이동합니다. 템플릿 등록을 통해 각 내용을 기입합니다. 템플릿 내용에는 변수를 사용할 수 있습니다.템플릿에는 변수를 사용해서 내용을 등록해두고 API 호출시 변수에 대응하는 값을 넣어주면 호출 내용대로 알림톡이 발송됩니다.*템플릿 : #{이름} 알림톡입니다. *API 호출 : 홍길동 알..
[Spring Boot]알림톡 보내기 2024. 3. 28.