분류 전체보기 8

🧩 @Setter, set 메서드는 언제 사용하는걸까?

처음에는 “@Setter는 쓰지 말라고 하던데, 그런데 왜 어떤 코드는 쓰고 어떤 코드는 안 쓰는 거지?” 라는 생각이 들었습니다. 저처럼 의존성 주입은 무조건 생성자 방식이 좋다고 배워왔던 분들에게는 @Setter나 set 메서드의 존재가 헷갈릴 수 있습니다.하지만 최근 프로젝트를 하면서 설정값을 다루는 @ConfigurationProperties 같은 클래스에서 setter 메서드를 직접 써야 하는 경우가 있었고, 그 이유를 공부하면서 정리가 필요하다고 느껴 이 글을 작성하게 되었습니다.저처럼 '@Setter=안좋다'라고만 배웠던 분들에게 도움이 되길 바라며, 구체적으로 언제 사용하는지 살펴보겠습니다 😊❓ 무조건 생성자 주입이 최고 아닌가?보통 Spring에서는 불변성(immutability) 과 ..

Spring Boot/기술 2025.05.24

트러블슈팅 - 쿼리 최적화로 11초 → 681ms 단축

개발 중 더미 데이터를 활용한 테스트 과정에서 쿼리 성능 저하 문제가 발생했고, 이를 해결하기 위해 쿼리 구조 개선 및 인덱스 추가를 진행했던 경험을 공유합니다. ❗ 문제 발생더미 데이터를 약 496,000건 삽입한 상태에서 특정 게시글 리스트를 조회하는 쿼리 실행 시, 응답 시간이 약 11초가 소요되는 문제가 발생했습니다.이러한 응답 지연은 실제 서비스에서도 치명적인 영향을 줄 수 있어, 즉시 원인 분석 및 해결이 필요했습니다. 🔍 원인 파악쿼리를 디버깅한 결과, 다음과 같은 구조에서 병목이 발생하고 있었습니다.post 테이블과 category 테이블 사이의 중간 테이블인 post_category_matches를 JOIN하는 과정에서 조건 검색 속도가 급격히 느려지고 있었습니다.조인 대상 컬럼에 인덱..

Spring Boot DevTools 가 필요있을까?

새로운 개인 프로젝트를 시작하며 종속성을 추가하는 과정에서, Spring Boot DevTools의 주요 기능과 장점에 대해 정리해보았습니다. 처음에는 “나는 어차피 코드 수정하면 서버 재시작하는 습관이 있는데, 굳이 DevTools를 써야 할까?” 라는 생각이 들었습니다. 이미 DevTools를 사용 중인 분들에게는 익숙한 내용일 수도 있지만,저처럼 아직 사용해보지 않았거나 도입을 고민 중인 분들에게는 도움이 될 수 있을 것 같아 이 글을 작성하게 되었습니다.앞으로 직접 사용해본 후기를 추가로 남겨보겠습니다 😊🛠 Spring Boot DevTools개발할 때마다 코드 수정 → 서버 재시작 → 브라우저 새로고침 의 반복매번 손으로 하다 보면 귀찮고 시간도 아까운 것 같습니다.이럴 때 개발자 경험을 확..

JAVA - 이스케이프 시퀀스

이스케이프 시퀀스란?이스케이프 시퀀스(Escape Sequence)는 여러 프로그래밍 언어에서 특수한 문자나 제어 문자를 표현하기 위해 사용보통 \(백슬래시)와 함께 특정 문자를 조합해서 표현 주로 쓰는 이스케이프 시퀀스이스케이프 시퀀스설명\n 개행(newline) → 줄바꿈 \t 탭(tab) → 일정 간격 띄우기 \\ 백슬래시 출력\"큰따옴표 출력 \' 작은따옴표 출력 \b이전 문자 삭제 \r줄 맨 앞으로 이동  이스케이프 시퀀스 예제실행 코드public class Scanner1 { public static void main(String[] args) { System.out.println("Hello\nWorld"); // 개행 (줄바꿈) System.out.print..

JAVA - 대소문자 바꿔서 출력하기

문제 설명 :  영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.  문제 풀이import java.util.Scanner;public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.next(); StringBuilder result = new StringBuilder(); for (char c : a.toCharArray()) { if(Character.isUpperCase(c)..

JAVA - a와 b 출력하기

문제 설명 : 정수 `a`와 `b`가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요.  문제 풀이import java.util.Scanner;public class Solution { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); System.out.println("a = "+a); System.out.println("b = "+b); }} 결과 정리Scanner 클래..

JAVA - 문자열 출력하기

문제 설명 : 문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.문제 풀이import java.util.Scanner;public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.next(); System.out.println(a); }} 결과 정리System.out.println()1. 자동으로 줄바꿈2. ("문자열") or (변수명), ("문자열"+변수명) 등으로 표기3. intellij 에서는 'sout' 을 사용하면 자동 완성 예시)

배열에서 특정 정수 값 찾기

문제 : 정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.  제한사항1 ≤ array의 길이 ≤ 100 0 ≤ array의 원소 ≤ 1,000 0 ≤ n ≤ 1,000 답class Solution { public int solution(int[] array, int n) { int answer = 0; for ( int i = 0; i  해결과정1. for 반복문을 사용. 배열의 길이 array.length까지 i를 사용하여 순회.2. 반복문 안에 if 조건문 사용. 배열 요소가 n과 같으면 answer를 1씩 증가. 중요! 배열의 i 번째에 해당하는  ..