[Spring Boot 시작 과정] 2. Application Bootstraping을 위한 13단계
SpringApplication 인스턴스가 생성된 후 인스턴스의 run() 호출시(정적 메서드 run()이 아니다) Application Bootstraping을 위한 13단계를 거치는데 어떤 과정들을 수행하는지 알아보자. SpringApplication 클래스 코드는 Spring Boot 3.2.1 버전을 사용하였다.
배움의 즐거움, 나눔의 가치를 실천하는 DevLog
SpringApplication 인스턴스가 생성된 후 인스턴스의 run() 호출시(정적 메서드 run()이 아니다) Application Bootstraping을 위한 13단계를 거치는데 어떤 과정들을 수행하는지 알아보자. SpringApplication 클래스 코드는 Spring Boot 3.2.1 버전을 사용하였다.
Spring Boot 애플리케이션을 개발할 때 우리가 가장 먼저 마주하는 코드는 @SpringBootApplication 어노테이션이 붙은 클래스와 그 안의 main 메서드일 것이다.
몇 줄 안되는 매우 간단한 코드지만 SpringApplication.run() 호출 뒤에는 수십 개의 클래스가 협력하여 복잡한 초기화 과정을 수행한다. Spring Boot는 이러한 복잡성을 숨기고 개발자에게 단순한 인터페이스를 제공하지만 내부 동작을 이해 하면 더 효과적으로 Spring Boot를 활용할 수 있다. 이번 포스팅에서는 SpringApplication 객체가 생성될 때 내부적으로 어떤 동작들이 이루어지는지 정리해 보고자 한다.
Spring Boot 분산 환경(멀티 인스턴스)에서 발생하는 스케줄러 중복 실행 문제를 ShedLock과 Redis를 활용해 해결하는 방법과 상세 설정 과정을 정리했다.
Spring Data MongoDB 변환 방식에 따라서 대량의 bulk insert를 수행할 때 성능상의 병목이 발생할 수 있다. 우리는 이런 문제를 bson4jackson과 RawBsonDocument를 이용하여 대량의 bulk insert를 처리할 때 성능의 극대화를 이룰 수 있다.
Spring gRPC 1.0.0 버전이 정식 릴리즈 됐다. 이를 통해 이제 Spring 공식 지원을 통해 안정적인 고성능 RPC(Remote Procedure Call) 환경을 쉽게 구축할 수 있다. 이번 포스팅에서는 gRCP 1.0.0 정식 릴리즈가 되면서 기존의 gRPC 0.X 버전을 사용하던 기존 프로젝트에서 gRPC 1.0.0 버전을 적용하기 위해서 고려해야 할 사항과 적용 방법, 그리고 gRPC 사용법에 대해서 간단히 정리해 보고자 한다.
Java 빌드 프로세스에 jdeb를 통합하여 Windows나 MacOS 환경에서도 표준 리눅스 배포 패키지인 .deb 파일을 쉽고 자동화된 방식으로 생성하는 방법을 소개한다.
기존 JVM 배포 방식 보다 훨씬 빠른 구동 속도와 적은 메모리 사용량을 자랑하는 GraalVM Native Image는 클라우드 네이티브 환경에서 선택이 아닌 필수가 되어 가고 있다. Spring AOT의 사전 처리 과정과 Buildpacks와 Native Build Tools 두 가지 방식을 통해 spring boot graalvm native image를 빌드하는 방법을 정리하였다.
spring boot 에서 기본적으로 사용하는 logging 모듈인 logback에 대해서 상세히 정리하였다. spring boot logback을 통해서 애플리케이션 logging을 구성하는데 있어서 많은 도움이 될 수 있다.
spring boot 애플리케이션에서 빼놓을 수 없는 것이 바로 logging 이다. spring boot logging 설정 방법과 프로파일별 logging을 분리하는 방법등에 대해서 정리해 보았다.
Server Sent Event (SSE)는 웹 어플리케이션에서 실시간 업데이트를 제공하는 데 사용되는 웹 기술 중 하나이다. Spring에서는 Spring MVC에서 사용되는 SseEmitter 클래스를 제공하여 손쉽게 SSE 스트림을 생성하고 클라이언트에게 이벤트를 푸시할 수 있도록 한다. 이를 통해 클라이언트가 연결을 유지하면서 서버로부터 데이터를 지속적으로 수신할 수 있도록 한다. 이번 포스팅에서는 Spring에서 SSE를 사용하는 방법에 대해서 정리해보고자 한다.