[Java] LinkedHashMap에서 특정 값을 가진 항목 제거하는 방법
·
개발 (Development)/Java
Java에서 LinkedHashMap을 사용할 때, 특정 값을 가진 항목을 제거하고자 하는 경우가 있습니다. 하지만 for-each 문을 사용해 직접 제거할 경우 ConcurrentModificationException이 발생할 수 있기 때문에, 안전한 방법으로 처리하는 것이 중요합니다. 이 글에서는 특정 값(ex. 0, null, 혹은 사용자 정의 값)을 가진 항목을 안전하게 제거하는 방법을 소개합니다.특정 값을 가진 항목 제거: Iterator 사용LinkedHashMap은 순서를 유지하는 특성이 있어 반복자(Iterator)를 사용하는 것이 가장 안전합니다.예제 코드import java.util.Iterator;import java.util.LinkedHashMap;import java.util.M..
[Java] printStackTrace() 경고 해결 및 로깅 적용하기
·
개발 (Development)/Java
Java 코드를 작성하던 중, printStackTrace()에 노란색 경고 줄이 생기는 것을 발견했습니다. 단순히 예외 정보를 콘솔에 출력하는 방식은 실제 서비스 코드에 적절하지 않다는 것을 의미하는 경고였습니다. 이에 따라 로깅 프레임워크를 적용하여 문제를 개선한 과정을 정리해 보았습니다.문제 상황다음은 기존 코드입니다:HashMap thresholds = new HashMap();try { thresholds = getThresholds();} catch (Exception e) { e.printStackTrace(); // 여기서 경고 발생}이 코드는 getThresholds() 메서드에서 예외가 발생할 경우 콘솔에 에러 스택을 그대로 출력합니다. 이는 개발 단계에서는 유용할 수 있지..
[Java/Spring Boot] AWS 환경에서 DB 직접 접근이 어려운 경우: Java 애플리케이션에서 SQL 파일을 실행하여 데이터 삽입하기
·
개발 (Development)/Java
회사 프로젝트 중 AWS에 배포된 서비스 환경에서는 보안상의 이유로 데이터베이스에 직접 접근할 수 없었습니다. 운영 서버에서 PostgreSQL DB를 직접 수정하거나 삽입 쿼리를 실행하는 것이 제한되었고, SSH나 DB 툴 접속도 허용되지 않았습니다.이러한 제약을 해결하기 위해, Java 애플리케이션 내부에 SQL 파일을 포함시키고 애플리케이션 실행 시 이를 실행하도록 구성하는 방식을 선택했습니다. 과정 중 삽입 대상 데이터에 문자열로 포함된 세미콜론(;) 때문에 실행 오류가 발생하는 중요한 시행착오도 있었기에, 그 내용을 중심으로 아래와 같이 단계별로 정리합니다.1. Python으로 CSV 파일을 읽어 INSERT SQL 생성우선 삽입할 데이터는 CSV 형태로 정리되어 있었습니다. 이를 기반으로 Py..
[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를 손상시킬 수 있습니다.인증/인가 없이 데이터 노출: 내부용이라도 인증 없이 공개되면 사용자 정보, 로그 등 민감한 데이터가..