Springboot kotlin JPA QueryDSL 설정 및 테스트
·
Programming/BackEnd
- 이번 포스팅에서는 Kotlin 언어로 구성된 Springboot 에서 QueryDSL 을 설정하는 방법에서부터 테스트까지 진행하겠습니다. - 설정build.gradle.kts 파일 안에,plugins { kotlin("jvm") version "1.9.25" kotlin("plugin.spring") version "1.9.25" id("org.springframework.boot") version "3.3.4" id("io.spring.dependency-management") version "1.1.6" // 추가 kotlin("plugin.allopen") version "2.0.21" // allOpen 에 지정한 어노테이션으로 만든 클래스에 open 키워드를 ..
Springboot logback 적용
·
Programming/BackEnd
- springboot logback 이란, 스프링부트 프로세스에서 발생하는 로그들의 형식을 정해주는 기능입니다.예를들어 test 라는 로그를 남길 때,import org.slf4j.Loggerimport org.slf4j.LoggerFactoryprivate val classLogger: Logger = LoggerFactory.getLogger(this::class.java)fun test(){ classLogger.info("test")} 위와 같이 로깅을 하는데,의도대로라면 로그에 "test" 만 찍혀야 하겠죠? 하지만 운영 단계에서는 해당 로그가 찍힌 시간, 로그의 중요도, 실행된 스레드가 무엇인지 등을 자동으로 로깅하고 싶을 수도 있습니다.그렇다면 위와 같은 로깅 코드마다 각 정보를 일일이 넣..
Springboot 로 Socket(STOMP) 개발하기
·
Programming/BackEnd
- 이번 포스팅으로는 Springboot 로 Socket 을 개발 할 때, STOMP 를 사용하도록 하겠습니다. - STOMP(Simple Text Oriented Messaging Protocol)STOMP 는 텍스트 기반의 메시징 프로토콜로, 텍스트 메시지 전송을 위해 설계된 간단한 프로토콜입니다.STOMP는 WebSocket 위에서 사용할 수 있으며, 다양한 메시징 시스템에 쉽게 적용할 수 있도록 만들어졌습니다. STOMP는 클라이언트와 메시지 브로커 사이에서 상호작용을 단순화하는 역할을 합니다. 브로커 기반 메시징 시스템에서 클라이언트가 메시지를 보내고 받고, 구독하고 브로커와 소통하는 방식의 규칙을 정의합니다. STOMP의 주요 특징은,1. 텍스트 기반 프로토콜:STOMP는 텍스트로 이루어진 프..
Springboot 로 Socket(SockJS) 개발하기
·
Programming/BackEnd
- 이번 포스팅에서는 Springboot 에서 Socket 을 사용한 개발 방식에 대해 알아볼 것입니다.Socket 은 아시다시피 실시간 양방향 통신 기술로, 연결이 끊기지 않고 상호간 데이터를 전송하고 수신할 수 있기에 채팅 등을 구현할 때 사용합니다. - 정식적으로 채팅 등의 서비스를 만들어보기 위해서는 클라이언트 개발의 수고나 접속자 연결 및 계정 관리, 채널 관리 등의 여러 요소들을 구현해야합니다.즉, 계정 시스템이나 채널 관련 데이터베이스 등의 구축이 필요한데, 저는 여기까지 구현하기보다는 Socket 자체에 대해 이해가 쉽도록 기능 중심의 구현을 하려고 합니다. 아래 실습에서는 단순하게 Springboot 에서의 Socket 기술 사용의 원형 및 클라이언트에서 메시지를 서버에 보내면 서버에서 ..
Springboot kotlin Excel 파일 읽기, 쓰기 기능 구현
·
Programming/BackEnd
- 이번 글에는 Springboot 로 Excel 파일을 읽고 쓰는 방식에 대해 알아볼 것입니다. - build.gradle사용라이브러리로, // (Excel File Read Write) // : 액셀 파일 입출력 라이브러리 implementation("org.apache.poi:poi:5.2.5") implementation("org.apache.poi:poi-ooxml:5.2.5") implementation("sax:sax:2.0.1")위와 같이 추가해주세요. - 다음으로 기능을 따로 나누어 보기 좋도록 모듈화를 할 것입니다.Excel 파일 관련 처리 기능들을 모아둔,ExcelFileUtil.kt 파일을 만들어서,import org.apache.poi.openxml4j...
Springboot Kotlin String 문자열을 투명 배경 서명 이미지(BufferedImage) 로 변경하기
·
Programming/BackEnd
- 어떠한 String 이 오더라도 배경이 투명한 서명 이미지로 변경하는 코드를 작성해보겠습니다.BufferedImage 객체를 사용하여 추출한 Graphics2D 객체를 사용합니다.    // (문자열을 투명 배경 서명 이미지로 변경하는 함수)    fun createSignatureImage(        // 서명화할 텍스트        text: String,        // 사인 이미지 사이즈        signImageWidth: Int,        signImageHeight: Int,        // 사인 텍스트 색상        signColor: Color,        // 사인 텍스트 폰트        signFont: Font    ): BufferedImage {     ..
Springboot Kotlin 파일 압축 및 압축 해제 코드
·
Programming/BackEnd
- kotlin 을 사용한 파일 압축 및 압축 해제 코드는 아래와 같습니다. // (디렉토리 내 파일들을 ZipOutputStream 으로 추가) fun compressDirectoryToZip(directory: File, path: String, zipOutputStream: ZipOutputStream) { for (file in directory.listFiles() ?: emptyArray()) { if (file.isDirectory) { compressDirectoryToZip(file, "$path/${file.name}", zipOutputStream) } else { addToZip(file, "$path/${file.name}", zipOutputStream) } } } // (파일들..
Springboot Java/kotlin 암호화/복호화 구현 코드(AES256, Base64, SHA256, HmacSHA256)
·
Programming/BackEnd
- 이번 포스팅에선 Springboot 를 사용하여 암/복호화 라이브러리를 사용하는 코드를 작성하겠습니다.- Kotlin 코드import java.nio.charset.StandardCharsetsimport java.security.MessageDigestimport java.util.*import javax.crypto.Cipherimport javax.crypto.Macimport javax.crypto.spec.IvParameterSpecimport javax.crypto.spec.SecretKeySpec// [암호화, 복호화 관련 유틸]object CryptoUtil { // [암호화 / 복호화] // (AES256 암호화) fun encryptAES256( text..
Springboot Redis 설정 및 사용 (다중 데이터 소스, Redis Cluster 적용)
·
Programming/BackEnd
- 이번 포스팅에서는 Springboot 에서 Redis 와 연동하는 설정과 사용 방식에 대한 설명글을 작성하겠습니다. - 2025-05-09 수정사항아래 설명글에서 소개한 Redis 설정 방식에서 개선된 부분이 다수 존재합니다.java-springkotlin-spring위 github 레포지토리에서 module-sample-redis 에 있는 설정 코드가 최신 코드입니다.최신코드를 기반으로 하여 아래 설명글을 참고하시면 됩니다. - 설명글이번에도 먼저 build.gradle 에 라이브러리를 입력하세요. // (Redis) // : 메모리 키 값 데이터 구조 스토어 implementation("org.springframework.boot:spring-boot-starter-data-red..
Springboot 요청/응답 자동 로깅 필터 만들기
·
Programming/BackEnd
- 이번 게시글에서는 Springboot 에서 API 에 요청이 있을 때마다 그 요청 정보와 응답 결과를 자동으로 로깅하는 필터를 만들어보겠습니다. import jakarta.servlet.AsyncEventimport jakarta.servlet.AsyncListenerimport jakarta.servlet.FilterChainimport jakarta.servlet.ServletExceptionimport jakarta.servlet.http.HttpServletRequestimport jakarta.servlet.http.HttpServletResponseimport org.slf4j.LoggerFactoryimport org.springframework.core.Orderedimport org...