
요즘 Reactor 기반의 RxJava, Spring Webflux 등의 기술들이 내세우는 점이 Asynchronous & Non-Blocking 기반 방식이라는 점이다. 그래서 Webflux를 학습하기 전에 Sync, Async, Blocking, Non-Blocking에 대한 개념을 한번 정리하고자 한다. Synchronous (동기) vs Asynchronous (비동기) 먼저 Synchronous의 어원을 보면 syn -> together, chronous -> time을 의미한다. 그래서 두 가지 이상이 함께 시간을 맞춘다 (동기) 라는 의미이다. Asynchronous는 Synchronous에 부정 접두사인 a가 붙은 것으로 두 가지 이상이 서로 시간을 맞추지 않는다 (비동기) 라는 의미이다...

스프링은 AOP안에서 자기 자신의 메서드를 호출하면 AOP가 적용되지 않음. 정말 기본적인 상식?이지만 깜빡하는 경우가 있음. 외부에서 호출해야 해당 @Transactional이 존재하는 빈을 감싼 proxy bean이 호출되어 Transaction이 적용됨. 실제로 적용이 안되는 지 간단한 테스트를 해보자. import jpabook.jpashop.service.TestService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Control..
JDK Dynamic Proxy & CGLIB Aspect 프레임워크와는 달리 스프링에서는 간단한 설정만으로 JDK Dynamic Proxy와 CGLIB 방식을 사용할 수 있도록 되어 있습니다. 두 방식의 차이는 인터페이스의 유무로서, AOP의 타깃이 되는 클래스가 인터페이스를 구현했다면 JDK Dynamic Proxy를 사용하고, 구현하지 않았다면 CGLIB 방식을 사용합니다. 기본적인 방침은 이러하나 사용자가 어떻게 설정하느냐에 따라서 인터페이스를 구현했다 하더라도 CGLIB방식을 강제하거나 AspectJ를 사용할 수 있습니다. * CGLIB방식을 사용: // proxy-targetclass="true"을 추가하여 CGLIB을 사용하도록 한다. proxy-target-class="true"로 주면 됨..

스프링은 지정된 클래스 이름을 가지고 리플렉션을 이용해서 해당 클래스의 오브젝트를 만듦. 클래스의 이름을 갖고 있다면 다음과 같은 방법으로 새로운 오브젝트를 생성할 수 있음. Date now = (Date) Class.forName("java.util.Date").newInstance(); 스프링은 내부적으로 리플렉션 API를 이용해서 빈 정의에 나오는 클래스 이름을 가지고 빈 오브젝트를 생성함. 그러나 다이나믹 프록시 오브젝트는 위와 같이 일반적인 스프링의 빈으로는 등록할 방법이 없음. 스프링은 클래스 정보를 가지고 디폴트 생성자를 통해 오브젝트를 만드는 방법 외에도 빈을 만들 수 있는 여러 가지 방법을 제공함. => 대표적으로 팩토리 빈을 이용한 생성 방법. 팩토리 빈을 만드는 방법에서 가장 간단한 ..

1. 제공하는 주체가 다름 필터는 JavaEE에서 제공하는 클래스이고 (서블릿 스펙, 2.3부터 추가됨) 인터셉터의 경우 스프링에서 제공하는 클래스 (빈으로 등록해서 사용 가능) 2. 적용 시점이 다름 서블릿 컨테이너에서 요청을 받은 경우 (DispatcherServlet이 받기전에) 먼저 filter를 타고, 그 후에 DispatcherServlet이 그 요청을 받아서 매핑되는 handler에게 요청을 전달하기 전에 interceptor가 intercept함. 3. 작동 방식이 다름 public interface Filter { void doFilter(ServletRequest request, ServletResponse response, FilterChain chain); } 필터는 체인구조로 연달..
- Total
- Today
- Yesterday
- 논블로킹
- 필터
- 핸들러 인터셉터
- Handler Interceptor
- http://www.nextree.co.kr/p6960/
- a
- 코딩테스트 고득점 Kit
- 프로그래머스
- Filter
- 해시
- 인터셉터
- Asynchronous
- 동기
- 프로그래머스 Level 1
- 프로그래머스 Level 3
- blocking
- 프로그래머스 Level 2
- 블로킹
- 스택/큐
- non-blocking
- 비동기
- Synchronous
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |