[Spring][SpringMVC] Spring Boot 기본 ExceptionResolver 3종 완전 정리
·
Dev Framework/Spring
Spring Boot 기본 ExceptionResolver 3종 완전 정리Spring MVC에서 예외가 발생하면 DispatcherServlet은 내부적으로 HandlerExceptionResolverComposite를 통해예외 처리 흐름을 제어합니다. 해당 Composite에는 기본적으로 다음의 Resolver들이 등록되며, 순서대로 예외 처리를 시도합니다.등록 순서ExceptionHandlerExceptionResolverResponseStatusExceptionResolverDefaultHandlerExceptionResolver각 Resolver는 다음과 같은 상황에서 사용됩니다. 1. ExceptionHandlerExceptionResolver정의@ExceptionHandler 애노테이션이 붙은..
[Spring] ControllerAdvice + ExceptionHandler 전역 예외 처리
·
Dev Framework/Spring
@ControllerAdvice와 @ExceptionHandler 완전 정복도입 배경: 왜 전역 예외 처리가 필요한가?서비스를 운영하다 보면 예외는 피할 수 없는 현실입니다. 특히 웹 애플리케이션에서는 다음과 같은 요구가 자주 등장합니다:클라이언트에게 일관된 에러 응답 포맷을 제공해야 한다.추후에 API 스펙이 변경되면, 프론트엔드의 수정이 불가피하다.따라서 많은 부수효과가 발생한다.비즈니스 예외와 시스템 예외를 구분해서 다뤄야 한다.예외 발생 시 적절한 로그, 알람, 후속 처리를 구성해야 한다.컨트롤러마다 중복되는 try-catch를 제거하고 싶다.Spring은 이러한 요구를 해결하기 위해 전역 예외 처리 메커니즘을 제공합니다. 그 핵심은 @ControllerAdvice와 @ExceptionHandle..
[Spring] @Configuration과 CGLIB 프록시 마법
·
Dev Framework/Spring
@Configuration@Configuration은 단순히 설정 클래스를 나타내는 게 아니라, Spring이 내부에서 CGLIB 프록시를 적용할 수 있도록 의도적으로 명시하는 어노테이션입니다. 이 덕분에 Spring은 Java 코드로도 안전하게 싱글톤 빈을 구성할 수 있습니다. 읽기 전에 알아두면 좋은 점Spring은 기본적으로 모든 빈을 싱글톤으로 관리합니다.이를 통해 메모리 낭비를 줄이고, 같은 객체를 재사용함으로써 성능과 일관성을 확보할 수 있습니다.@Bean 메서드는 Spring 컨테이너에 객체를 등록하는 방법이지만, @Bean만으로는 메서드 간 호출 시 싱글톤 보장이 어렵습니다.@Configuration은 메서드 단위가 아니라 클래스 단위로 적용됩니다.@Configuration을 클래스에 붙여..
[Spring] 스프링 AOP - 1
·
Dev Framework/Spring
스프링 AOP(Aspect Oriented Programing)스프링의 핵심 철학 '비침투성'스프링은 EJB 같은 무거운 프레임워크가 주류이던 시절에 등장했습니다. 여기서 말하는 EJB는 Spring 이전에 주로 사용되던 자바 엔터프라이즈 애플리케이션 프레임워크입니다.그때의 프레임워크들은 다음과 같은 문제가 있었습니다.도메인 로직이 프레임워크 코드와 강하게 결합비즈니스 로직을 작성하려 해도, 상속 구조나 라이프사이클에 제약을 받아야 했음테스트하려면 컨테이너를 띄워야만 가능스프링 창시자인 Rod Johnson은 이 문제를 해결하고자 스프링을 설계하면서 이런 철학을 전면에 내세웠습니다."J2EE should not invade your domain model. Your domain model should b..
[NestJS] NestJS는 Spring에서 많은 영감을 받았다.
·
Dev Framework/Node.js
1. NestJS와 Spring 프레임워크의 유사성NestJS는 Java 생태계의 Spring 프레임워크에서 많은 영감을 받았습니다. 이 두 프레임워크 간의 유사성은 다음과 같습니다:1.1. 모듈 구조Spring과 NestJS 모두 모듈화된 구조를 채택하고 있습니다. Spring의 `@Configuration`과 `@ComponentScan`은 NestJS의 `@Module` 데코레이터와 유사한 역할을 합니다. 두 프레임워크 모두 관련 기능을 논리적 단위로 그룹화하여 애플리케이션의 구조를 개선합니다.1.2. 의존성 주입 시스템Spring의 핵심 기능 중 하나인 의존성 주입(DI)은 NestJS에서도 중요한 역할을 합니다. Spring의 `@Autowired`와 유사하게, NestJS는 생성자 주입을 통해..
[NestJS] NestJS는 처음이지? 어서와.
·
Dev Framework/Node.js
1. NestJS 너 대체 정체가 뭐야?NestJS는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 혁신적인 프레임워크입니다. 2017년 Kamil Myśliwiec에 의해 개발된 이 프레임워크는 Angular의 아키텍처에서 영감을 받아, TypeScript를 기반으로 한 견고하고 모듈화된 구조를 제공합니다.현대적인 서버 애플리케이션 개발에서 마주치는 많은 과제들, 예를 들어 코드의 구조화, 확장성, 유지보수성 등의 문제를 NestJS는 효과적으로 해결합니다. 이 프레임워크는 Express.js를 기본 HTTP 서버 프레임워크로 사용하지만, 필요에 따라 Fastify로 전환할 수 있는 유연성도 제공합니다.Fastify: Node.js 환경에서 사용되는 웹 프레임워크로, 성능이..
[Spring Security] 01. Spring Security에 대해서
·
Dev Framework/Spring
Spring Security: 스프링 애플리케이션의 보안 강화 Spring Security는 Java 기반의 애플리케이션, 특히 Spring 기반의 애플리케이션에 보안 기능을 추가하는데 사용되는 강력한 인증 및 권한 부여 프레임워크입니다. 웹 보안 및 엔터프라이즈 애플리케이션의 보안을 위해 설계된 이 프레임워크는 스프링 애플리케이션의 보안을 적용하는 과정을 크게 간소화합니다. 주요 기능 Spring Security는 다음과 같은 다양한 보안 기능을 제공합니다: 인증(Authentication): 다양한 인증 메커니즘 지원 (폼 기반 로그인, LDAP, JWT, OAuth2 등). 권한 부여(Authorization): 인증된 사용자의 자원 접근 권한 결정. 보안 헤더(Secure Headers): HTT..
[Spring]Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed 해결 방법
·
Dev Framework/Spring
UnableToConnectException: Public Key Retrieval is not allowed오류는 MySQL에 연결할 때 발생하는 보안 관련 오류입니다. 이 오류는 MySQL 서버가 클라이언트에게 RSA 공개 키를 전송하는 방식으로 비밀번호를 인증하려고 할 때, 클라이언트(여기서는 Spring Boot 애플리케이션)가 이러한 방식의 인증을 허용하지 않을 때 발생합니다. 문제 해결 방법: 이 문제를 해결하는 가장 간단한 방법은 application.properties 파일에 있는 데이터베이스 연결 URL에 allowPublicKeyRetrieval=true 설정을 추가하는 것입니다. 그러나 보안상의 이유로, 이 옵션을 사용할 때는 useSSL=false 옵션과 함께 사용하지 않도록 주의해..
개발자 성현
'spring' 태그의 글 목록