☕Java/Spring44 Spring WebFlux 핵심 내용 정리: 진짜 비동기, 논블로킹을 위한 설계 조건 WebFlux에 대해 이해가 잘 가지 않았던 점을 조사하고 정리해 보았다. WebFlux는 메서드의 반환을 비동기적으로 처리할 수 있게 해 주며, 메서드들은 Mono 또는 Flux와 같은 비동기 객체를 반환한다. 대부분의 경우, 이 스트림이 완료되었을 때 HTTP 응답을 전송하지만, Flux를 이용한 스트리밍 응답처럼 중간에 데이터를 전송할 수도 있다.이 구조 덕분에 요청마다 스레드를 붙잡아두지 않아도 되기 때문에, 시스템은 훨씬 더 효율적으로 스레드를 활용할 수 있다.즉, WebFlux를 사용하는 가장 큰 이유는 요청 수가 많아질 때도 상대적으로 더 잘 버틸 수 있기 때문이다. 하지만 아무리 비동기 흐름이라도, 중간에 DB I/O나 파일 I/O처럼 블로킹 작업이 포함되면 해당 작업은 별도 스레드에서 대.. 2025. 6. 21. 스프링 국제화(Internationalization, I18N) 스프링 웹 MVC는 국제화를 단순화하도록 지원해 준다. 국제화를 위해서는 LocaleResolver, MessageSource, LocaleChangeInterceptor의 빈 등록이 필요하다. LocaleResolver는 사용자의 로케일을 얻는다. AcceptHeaderLocaleResolver - 요청의 Accept-Language 헤더 상의 로케일을 반환한다. SessionLocaleResolver - 세션에 저장된 로케일을 반환한다. FixedLocaleResolver - 고정된 기본 로케일을 반환한다. MessageSource는 현재 로케일에 맞는 메시지를 가져온다. ResourceBundleMessageSource - 특정 빈 이름으로 자원 번들에 접근하는 MessageSource 구현체 Re.. 2024. 4. 2. 스프링 시큐리티로 CSRF 방지 설정하기 CSRF 공격이란? CSRF(Cross Site Request Forgery) 공격은 사용자가 의도하지 않은 요청을 악용하여 악의적인 행위를 유도하는 기법이다. 웹 애플리케이션은 일반적으로 사용자를 인증하기 위해 세션 쿠키나 인증 토큰을 사용하는데, CSRF 공격자는 이 인증 정보를 이용하여 피해자인 것처럼 요청을 보낸다. 이를 통해 공격자는 피해자의 권한으로 악의적인 동작을 수행할 수 있다. 예를 들어, 피해자가 로그인한 상태에서 공격자가 조작한 링크를 클릭하면, 웹 애플리케이션은 피해자의 인증 정보를 사용하여 공격자가 조작한 요청을 수행한다. 이로써 공격자는 피해자의 계정으로 의도하지 않은 동작을 수행할 수 있게 된다. 스프링 시큐리티에서는 기본적으로 CSRF 방지를 활성화한다. HttpSecurit.. 2024. 3. 17. 스프링 프로젝트에서 service 인터페이스나 serviceImpl 클래스를 사용하는 이유와 사용해야 하는지 여부 Do I need an interface with Spring boot? In this blog post, we discover whether we have to use an interface when writing services with Spring boot. dimitri.codes 항상 서비스 인터페이스와 구체 클래스를 만들어 다른 클래스에 주입해야 한다고 묻는다면, 답은 X이다. 서비스 클래스를 교체해야 하는 경우가 아니라면 굳이 서비스 인터페이스를 만들어서 사용할 필요가 없다. 과거에는 스프링이 JDK Dynamic proxy를 사용해서 프록시를 생성하려면 인터페이스가 필요했지만 최근 버전의 스프링 프레임워크들은 CGLIB 프록시를 지원하고 권장하기 때문에 인터페이스가 필요하지 않다. 이런 이.. 2022. 11. 26. 이전 1 2 3 4 ··· 11 다음 728x90