- WebHandler 와 SpringstarryeyeSpring 이 WebHandler 의 구현체인 DispatcherHandler(front handler) 를 등록하는 과정을 알아보자. spring boot autoconfigure 에서 자동 구성(Auto Configuration) 기능에 의해 동작하는 HttpHandlerAutoConfiguration 이다. 자동 구성 조건에 따라 HttpHandler 를 빈으로 등록하고 있는 것을 알 수 있다. HttpHandlerAutoConfiguration 에서 HttpHandler 를 생성할 때 호출하는 WebHttpHandlerBuilder::applicationContext 메서드 코드의 일부이다. Spring container 에서 WEB_HANDLER_BEAN_NAME("webHandler") 의 ..
- 2024-03-10 16:59:01
- WebHandler 와 Netty 의 관계starryeyeWebHandler 에 대해 알아보겠다. WebHandler 는 .. Spring 5 부터 제공하는 web request 를 처리하는데 사용할 수 있는 인터페이스이다. 보통 Spring Reactive stack 에서 사용된다. Project Reactor 의 Reactor 에 의존한다. (Mono) 파라미터로 ServerWebExchange 는.. ServerHttpRequest, ServerHttpResponse 등을 얻을 수 있는 메서드를 제공하는 인터페이스이다. 즉, Servlet stack 의 Servlet, HttpServletRequest, HttpServletResponse 등의 역할과 유사하다고 볼 수 있다.. Spring Webflux 에서는 front handler 로.. WebHan..
- 2024-03-09 00:21:16
- Spring Data JPA (Hibernate), N + 1 Query ProblemstarryeyeN + 1 문제가 일어나는 모든 경우의 수에 대해 알아보고.. 한번 정리를 해보겠다. N + 1 Query problem ? 어떤 엔티티를 조회하기 위해 쿼리(1)를 수행했는데 예상치 못한 쿼리들(N)이 추가로 수행되는 상황을 말한다. 주로 일대다, 다대일 관계에서 발생한다. 이번 포스팅에서 사용할 DB 다이어그램이다. Team 이 여러 Member 를 가지는 관계이다. N + 1 조회 문제가 일어나는 케이스를 살펴보겠다. 글로벌 페치 전략이 즉시 로딩(Eager loading) 인 경우 JPQL 을 이용하여 어떤 엔티티를 조회 할 경우 발생한다. -> 글로벌 페치 전략이 즉시 로딩이지만, 사용자의 쿼리(JPQL) 가 우선이기 때문에 JPQL 을 충실히 수행후, 글로벌 페치 전략에 의해 연관관계에 있는 ..
- 2024-02-20 22:18:47
- Spring 과 JPAstarryeyeJ2EE 컨테이너 환경의 대표격인 Spring 에서 JPA 를 사용할 경우 알아야할 중요한 개념을 나열해보겠다. 순수하게 J2SE 환경에서 JPA 를 사용하면 개발자가 직접 EntityManager 를 생성해야하며, Transaction 도 관리해야한다. J2EE 환경에서 JPA 를 사용하면 트랜잭션 범위의 영속성 컨텍스트 전략이 기본으로 채택된다. Spring 에서 트랜잭션 범위와 영속성 컨텍스트 생존 범위가 동일한 전략을 따르면, 트랜잭션 AOP 를 활용한다. 트랜잭션 범위와 영속성 컨텍스트 생존 범위가 동일한 전략 해당 전략에서는 트랜잭션을 시작할 때, entityManager 를 생성하고 트랜잭션이 종료 될 때, entityManager 도 닫힌다. 트랜잭션이 같으면 동일한 EntityMana..
- 2024-02-14 22:24:35
- Netty 2starryeyeNetty Channel 의 pipline 으로 수행되는 ChannelHandler 가 제공하는 메서드를 하나씩 정리해보겠다. ChannelInboundHandler inbound I/O 이벤트를 처리하기 위한 ChannelHandler 이다. inbound I/O 이벤트가 발생되면 각 이벤트에 맞는 아래 메서드를 호출 해준다. void channelRegistered(ChannelHandlerContext ctx) throws Exception; Netty Channel 이 EventLoop 에 등록되는 경우 호출된다. - Netty ServerSocketChannel 의 경우 서버를 시작하며 EventLoop 에 최초 1회 등록할 것이므로 그 때 1회 호출 될 것이다. - Netty SocketCha..
- 2024-01-21 19:43:10
- Netty 1starryeyeSpring reactive stack 에서 사용되는.. Spring webflux 는 reactor 와 netty 를 의존한다. 뿐만 아니라, Spring data redis 도 netty 를 의존한다. 이번 포스팅에서는 netty 를 알아보겠다. Netty 소개 Netty 공식 홈페이지에 따르면 "Netty is asynchronous event-driven network application framework" 라 소개한다. (Server & Client) Netty 는.. HTTP, SMTP, FTP 등의 protocol 뿐만 아니라 다양한 protocol 을 지원한다. 또한, 불필요한 memory copy 를 최소화 하며 Java IO, NIO, selector 기반으로 적은 리소스로 높은 성능..
- 2024-01-17 01:11:58
- Spring Data, Object MappingstarryeyeR2dbc (Reactive Relational Database Connectivity), MongoDB 등에서 사용하는 Spring Data 의 기본적인 객체 매핑의 방법을 알아보겠다. 다양한 data store 에서 공통적으로 사용하는 방법이지만, 구현체 별로 다를 수 있다. 참고로.. 1. JPA(Jdbc) 는 Reactive Stack 에서 사용이 불가능 하여 R2dbc 가 나온 것이므로 헷갈리지 말 것. 2. JPA 는 앞으로 소개할 Spring Data 의 기본 Object mapping 과 좀 다르게 사용할 것을 권장 하므로 엮어서 생각하지 말 것. Object Mapping 은 크게 두 단계로 이루어진다. 1. Instance creation (Object creation) 2. Insta..
- 2024-01-07 18:13:39
- Proactor patternstarryeyeReactor pattern 에 이어서 Proactor pattern 을 알아보겠다. 두 패턴을 가르켜 Event handling pattern 이라 부르기도 한다. Proactor 패턴 Reactor 패턴에서는 단일 스레드로 IO 이벤트를 처리하였다. 단일 스레드가 커널에 epoll 을 활용하여 IO 작업의 준비 완료 상태를 주기적으로 확인하였는데.. (즉, Reactor, Selector 가 병목 지점인 것) Proactor 패턴에서는 AIO 로 동작하므로 커널이 AIO 로 IO 작업의 준비 완료 상태를 알려 주기 때문에 busy-wait 현상을 없앨 수 있다. 사용 기술 Proactor 패턴은 Java AIO를 사용한다. 특징 Java AIO 를 사용하기 때문에 비동기 non-blocking 으로 ..
- 2023-11-20 01:27:04
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)