[Java] Java jar 파일에서 리소스 파일 경로 사용하는 법
·
개발 (Development)/Java
Java 프로젝트를 jar 파일로 패키징한 뒤 실행할 경우, 개발 중에는 문제없던 리소스 파일 경로에서 오류가 발생하는 경우가 많습니다. 특히 설정 파일, 쿼리 템플릿 등 리소스 파일을 다룰 때 자주 마주치는 문제입니다. 그 원인과 해결 방법을 단계적으로 정리해보았습니다.1. 개발 중엔 되는데, 배포 후 오류?개발 환경에서는 다음과 같은 코드로 파일을 불러와도 문제가 없습니다.File file = new File("src/main/resources/config/config.json");하지만 jar 파일로 패키징한 후 실행하면 FileNotFoundException이 발생합니다. 이는 jar 내부에 있는 리소스는 실제 파일이 아니라 classpath 내에 존재하기 때문입니다.2. jar 내부 리소스는 C..
[Java/Spring Boot] Spring Boot + MyBatis 환경에서 쿼리 조회용 API를 만들기 전에 꼭 고려해야 할 5가지
·
개발 (Development)/Java
회사 내부 시스템에서 데이터를 빠르게 조회하기 위한 목적으로 Spring Boot + MyBatis + PostgreSQL 기반 백엔드 앱에 간단한 쿼리 조회용 API를 추가하고자 했습니다.하지만 단순히 API를 만드는 것만으로 끝나지 않고, 실무에서는 몇 가지 중요한 점들을 반드시 고려해야 한다는 사실을 알게 되었습니다. 이 글에서는 조회용 API를 만들기 전 꼭 고민해야 할 사항들을 정리해봅니다.1. 보안 이슈가장 주의해야 할 부분입니다.조회 전용이라고 해도 다음과 같은 보안 취약점에 노출될 수 있습니다.SQL 인젝션 위험: 입력받은 쿼리를 그대로 실행하면 악의적인 요청이 DB를 손상시킬 수 있습니다.인증/인가 없이 데이터 노출: 내부용이라도 인증 없이 공개되면 사용자 정보, 로그 등 민감한 데이터가..
[Java] 사내망에서 Gradle 빌드 시 PKIX 인증서 오류 해결기 (feat. 프록시 & 인증서 등록)
·
개발 (Development)/Java
최근 사내 개발 환경에서 Gradle 기반의 Spring Boot 프로젝트를 빌드하는 과정에서 아래와 같은 에러를 겪었다.Could not resolve org.springframework.boot:spring-boot-gradle-plugin:2.7.14PKIX path building failed: unable to find valid certification path to requested target처음에는 단순히 버전 오류나 저장소 설정 문제인 줄 알고 build.gradle과 settings.gradle을 점검했지만, 문제는 훨씬 더 깊은 곳에 있었다. 아래는 내가 이 문제를 해결해 나갔던 순차적인 과정이다.1. Gradle 설정 점검부터 시작// settings.gradlepluginMana..
[Java/SpringBoot] Kubernetes 환경에서 Spring Boot 로그를 Pod별로 Rolling 하도록 설정
·
개발 (Development)/Java
Spring Boot 기반 애플리케이션을 Kubernetes 환경에 배포하면서, 로그 수집 방식에서 다음과 같은 문제가 발생했다. 동일한 로그 경로에 여러 Pod가 동시에 접근하면서 로그가 덮어씌워지거나 뒤섞이는 문제가 생긴 것이다. 이를 해결하기 위해 Pod별로 로그를 분리하고, 날짜 기준으로 Rolling 되도록 설정한 경험을 정리해본다.1. 로그 파일이 충돌하는 문제 발생애플리케이션 로그는 app.log라는 고정된 파일명으로 기록되고 있었고, 이는 여러 Pod가 동일한 볼륨을 공유할 경우 로그 충돌을 일으켰다. 특히 상태 비저장(Stateless)한 구조에서 동시성이 높은 상황에서는 로그 유실이나 파일 잠금 문제가 발생할 수 있었다. 따라서 Pod마다 고유한 로그 파일을 생성하는 방식이 필요했다.2..