전체 글 39

[SpringBoot / Swagger] Resolved [jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.<init>(java.lang.Object)']

문제build.gradle을 다음과 같이 설정한 상태에서plugins { id 'java' id 'org.springframework.boot' version '3.5.0' id 'io.spring.dependency-management' version '1.1.7' id 'org.asciidoctor.jvm.convert' version '3.3.2'}swagger를 추가하기 위해 의존성을 추가하고implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0'swagger 링크 (http://localhost:8080/swagger-ui/index.html)에 접속해봤더니Resolved [jakarta.servlet..

🚨 에러 2025.05.31

[Springboot] 테스트 코드 실행 시 발생하는 warning 메세지 무시

문제SpringBoot 테스트 코드 작성 후 실행 시 발생하는 warningWARNING: A Java agent has been loaded dynamically (/Users/yeon/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.14.12/be4984cb6fd1ef1d11f218a648889dfda44b8a15/byte-buddy-agent-1.14.12.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is ..

🚨 에러 2025.05.30

[BOJ/2599/C++] 수열

문제📝 접근 방법배열 안에서 연속된 K개의 날에 대해 온도의 합을 구하고, 그 안에서 가장 최대합을 구하면 되기 때문에 슬라이딩 윈도우 방식으로 해결하였다.투포인터 보다는 확인해야 하는 날의 개수가 K개로 고정되어 있으므로 슬라이딩 윈도우가 적합할 것이라고 생각하였다.그래서 온도 값을 받으면서 누적합으로 sum 배열을 만들고슬라이딩 윈도우 방식으로 for문에서 i = k부터 n까지 돌면서 고정 길이 k의 연속 구간 합을 하나씩 계산하고, 그 중 최대값을 갱신하는 방식으로 문제를 해결하였다.😎 해결 코드#include #include using namespace std;int n, k; int sum[100001];int ans = -10000001;int main(void) { ios::sync..

[Spring] accessToken 유효성 검사 로직

리프레쉬토큰을 이용한 액세스 토큰 재발급 로직이 postman 상에서는 되지만, 실제 프론트와 연동했을 시 제대로 작동하지 않는 문제가 발생하였다.처음에는 쿠키 관련 문제인 줄 알아서 토큰 발급 -> 쿠키 전달 로직을 보았다./ // RefreshToken 쿠키로 전달 Cookie refreshCookie = new Cookie("refresh_token", refreshToken); refreshCookie.setHttpOnly(true); refreshCookie.setMaxAge(7 * 24 * 60 * 60); refreshCookie.setPath("/"); response.ad..

🚨 에러 2025.05.21

절차지향형, 함수지향형, 객체지향형 프로그래밍 패러다임의 차이

💡프로그래밍 패러다임?: 간단하게 말하면 프로그래밍 스타일!➡️ 코드 구조, 유지보수성, 확장성 등에 영향을 미침🍀 절차적 프로그래밍순차적인 실행 흐름 강조: 가장 전통적인 프로그래밍 패러다임프로그램을 순차적으로 실행되는 명령어 집합과 함수(또는 서브루틴)들의 조합으로 구성➡️ 프로그램의 흐름을 명확하게 기술, 문제를 단계별로 해결하는데 초점을 맞춤Procedure(프로시저)를 이용하여 작성하는 프로그래밍 스타일routine, subroutine, method, function ...절차적 프로그래밍의 주요 특징순차적 실행: 프로그램은 위 -> 아래로, 또는 지정된 흐름에 따라 순차적으로 실행됨. 각 단계가 명확한 순서를 가지며, 조건문 or 반복문을 통해 분기와 반복을 제어함함수와 서브루틴: 코드의..

CS/Programming 2025.05.21

@Transactional 의 내부 동작 원리

트랜잭션?: DBMS 또는 유사한 시스템에서 상호작용의 단위 (하나의 논리적인 작업 단위)특징AtomicConsistentIsolationDurability연산롤백커밋⇒ 그럼 Spring에서는 이 트랜잭션 처리를 어떻게 하는가?@Transactional스프링에서는 트랜잭션 처리를 위해 선언적 트랜잭션을 사용한다.@Transactional 과 같이 어노테이션 방식으로 이를 지원한다.Spring에서 데이터 작업의 실행단위를 명시하기 위해 사용한다고 볼 수 있다.클래스 / 메서드 위에 @Transactional 을 붙이면 AOP(관점지향프로그래밍)를 통해 타겟이 상속하고 있는 인터페이스 또는 타겟을 상속한 프록시 객체가 생성된다. 이때 프록시 객체의 메소드를 호출하면 타겟 메소드 전 후로 트랜잭션 처리를 수행..

Backend/🌱 Spring 2025.05.21

Bean 생명주기, ApplicationContext, 빈 초기화 순서

Bean: 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트Spring Application에서는 모든 객체가 Bean으로 관리될 수 있음애플리케이션의 다양한 컴포넌트들 간의 의존성을 정의하고, 관리하는 역할을 함객체 간의 결합도를 낮추고, 코드의 유연성과 테스트 용이성을 높임Singleton Scope를 가짐동일한 Bean 정의에 대해 스프링 컨테이너는 단일 인스턴스만을 생성, 애플리케이션 내에서 공유설정 방식이 유연함XML, Java Config, Annotation 등 다양한 방법으로 설정할 수 있음@Component, @Service, @Repository, @Controller 등의 어노테이션 -> Spring이 자동으로 Bean으로 등록Bean의 생명주기스프링 컨테이너 생성 →..

Backend/🌱 Spring 2025.05.21

Spring Boot Health Check의 동작 원리와 내부 구조 분석

Health Check?: 서버나 애플리케이션이 정상적으로 동작 중인지 외부에서 확인하기 위한 방법주로 로드 밸런서, 오토 스케일링, 모니터링 시스템(ex. AWS, K8s, ELB 등)에서 이 정보를 기반으로 인스턴스 상태를 판단한다. 보통 서비스의 고가용성, 고성능을 위한 부하 분산 등을 위해 서버의 다중화를 하고, 앞에서 어떤 서버로 요청을 보낼지 라우팅 역할을 하는 로드 밸런서를 위치시킨다. 이 로드 밸런서는 적절히 부하를 분산하여 A/B 서버 중 한 대에게 클라이언트의 요청을 보낸다. 하지만 아래와 같은 상태라면?이 두 케이스 모두 해당 서버 (B / C)로 요청을 보내면 안된다. 장애를 유발하거나, 부하를 오히려 크게 증가시켜 장애를 더 심각하게 만들 수 있다. 따라서 로드 밸런서에서는 각 서..

Backend/🌱 Spring 2025.05.20

[Spring] @interface 메서드 'value()'을(를) 찾을 수 없습니다 / Cannot find method 'value'

문제presignedURL을 구현하려고 하는 중, 환경변수에 있는 버킷 이름을 가져오기 위해 @Value를 넣었는데 찾을 수 없다는 에러가 났다. 원인lombok의 Value를 import 해온 것이 원인이다. 해결import org.springframework.beans.factory.annotation.Value;라는 제대로 된 springframework 라이브러리를 이용하여 환경변수 주입을 해준다. 기타lombok의 @Value: 불변 클래스용 애너테이션@Valuepublic class MyClass { private String bucketName;}모든 필드를 private final로 만들어줍니다@Getter, @AllArgsConstructor, @ToString, @EqualsA..

🚨 에러 2025.05.19

[MySQL] ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

문제mysql 접속을 하려고mysql -u root -p를 터미널에 입력했더니ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)발생 예상되는 비밀번호 다 해봐도 위 에러가 뜨길래 그냥 비밀번호 재설정을 해야겠다 생각하고 서버를 끄는 다음 명령어를 쳤는데 \> sudo mysql.server stop ERROR! MySQL server PID file could not be found!에러.. 이유ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)우선 이 에러는비밀번호가 틀렸거나root@localhost 계정..

🚨 에러 2025.05.19