Spring Framework (10) 썸네일형 리스트형 [Spring Boot] 스프링 부트 이벤트 리스너 구현과 등록 개요 실전 스프링 부트 책을 읽으며,스프링에 이벤트와 이벤트 리스너가 존재한다는 사실을 알게 되었다. 리스너의 구현 방식과 등록 방법에 대해서 정리해보고자 이 포스트를 작성한다. 1. 이벤트 리스너 구현 방법1. @EventListener 어노테이션 방식 (Spring 4.2+)@Componentpublic class MyEventListener { @EventListener public void handleApplicationReady(ApplicationReadyEvent event) { // 처리 로직 } @EventListener public void handleContextRefresh(ContextRefreshedEvent event) {.. [Spring Boot] SpringApplication.run() 메서드 인자에 관해서 개요package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.WebApplicationType;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(DemoApplication.class); springApplication.setW.. [Spring Boot] 리액티브 프로그래밍이란? 개요실전 스프링부트 책을 읽으며 package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.WebApplicationType;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(DemoApplication.class); spring.. [Spring Boot] 스프링 부트 애플리케이션 종료 개요 실전 스프링 부트 책을 읽던 중 shutdown hook 개념과 안전 종료 개념에 대해 배울 수 있었다. 관련 개념에 대해 알아보고,스프링 부트의 종료 로직을 좀 더 자세히 알아보자! 관련 개념1. Shutdown Hook- 개념: JVM이 종료되기 전에 실행되는 스레드- 이용: 스프링 부트에서는 자동으로 shutdown hook을 등록하여 애플리케이션 컨텍스트를 안전하게 종료한다. 2. 안전 종료(Graceful Shutdown)- 개념: 진행 중인 요청을 완료한 후 서버를 종료하는 방식- 지원 버전: 스프링 부트 2.3부터 지원.- 설정 방법# application.ymlserver: shutdown: gracefulspring: lifecycle: timeout-per-shutdo.. [Spring Boot] SpringApplication.run()을 호출하면 일어나는 일들 개요실전 스프링 부트 책을 읽다가 SpringApplication.run() 메서드가 실행될 때 수행하는 작업을 알게되었다.classpath에 있는 라이브러리를 기준으로 ApplicationContext 클래스 인스턴스를 생성CommandLinePropertySource를 등록해서 명령행 인자를 스프링 프로퍼티로 읽어 들인다.앞의 1단계에서 생성한 ApplicationContext를 통해 모든 싱글턴 빈을 로딩한다.애플리케이션에 설정된 ApplicationRunners와 CommandRunners를 실행한다. 설명은 위와 같았는데 과연 정말 그럴까???개발자는 코드로 공부해야 한다고 생각한다. 직접 코드를 뜯어보며 이해해보자. 코드먼저 참고한 스프링 부트의 버전은 3.2.2이다.버전이 다를경우 내부 로.. [Spring Security] SecurityFilterChain SecurityFilterChain의 개요이 글은 Spring Security 6.4.3을 기반으로 작성되었습니다. SecurityFilterChain은 FilterChainProxy에 의해서 사용되고,여러 개의 Security Filter들로 구성되어 있습니다. 이 SecurityFilterChain을 통해 보안 처리가 이루어진다고 생각하시면 됩니다. Security Filter들은 보통 Bean이지만,DelegatingFilterProxy나 Servlet container에 등록되는 대신 FilterChainProxy에 등록됩니다. 이를 통해 얻는 장점이 몇 가지 있습니다.1. Spring Security 디버깅이 편리해집니다.- FilterChainProxy는 모든 스프링 시큐리티 지원의 .. [Spring Security] DelegatingFilterProxy와 FilterChainProxy DelegatingFilterProxy이 글은 Spring Security 6.4.3을 기반으로 작성되었습니다. 위 그림은 Client의 하나의 HTTP request에 대해서 Filter들을 거쳐 Servlet까지 가는 그림입니다. DelegatingFilterProxy는 이 Filter중 하나입니다. DelegatingFilterProxy는 스프링에서 제공하는 필터 구현체로서,Servlet 컨테이너와 스프링 IoC 컨테이너의 다리 역할을 합니다. 다리 역할?서블릿 컨테이너는 스프링 IoC 컨테이너에서 관리하는 Bean들에 대해 알지 못합니다.하지만 DelegatingFilterProxy는 스프링 컨테이너에서 Filter를 구현한 Bean(Bean Filter)들을 찾아 등록할 수 있습니다.※ 아래.. [Spring Security] Servlet 기반 어플리케이션 보안의 개요 - FilterChain 개요이 글은 Spring Security 6.4.3을 기반으로 작성되었습니다. 스프링 시큐리티의 Servlet 지원은 Servlet 필터(Filter) 위에서 동작합니다.따라서 필터가 뭔지 아는 것이 먼저입니다. 위의 이미지는 하나의 HTTP request에 대해서 어떻게 처리하는 지 보여줍니다. 만약 클라이언트(Clinet)가 request를 하나 보내면, container에서는 FilterChain을 생성합니다.이 FilterChain에는 여러 개의 Filter들과 하나의 Servlet이 포함되어 있습니다. Spring MVC 어플리케이션에서는 주로 DispatcherServlet의 객체가 Servlet이 됩니다. 이 그림에서 중요한 건 두 가지입니다.첫째, 대부분의 경우 1개의 Servlet이 .. 이전 1 2 다음