개발관련18 Reactive Streams 이해하고 구현해보기 Reactive Streams 란? reactive-streams.org 에서는 다음과 같이 정의하고 있다. Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. 대충 해석하면 "논블로킹(Non-blocking) 백프레셔(back pressure)를 이용한 비동기 데이터 처리의 표준이다" Reactive Streams API Reactive Streams 는 뭔가 복잡할것 같지만, 실제로 아주 간단한 API 들의 조합으로 구성되어 있다. public interface Publisher { public void subscribe(Subscr.. 2020. 11. 25. commit 메시지에 자동으로 branch명 추가해보기 Git 으로 버전관리 하다 보면 많은 feature 브랜치를 생성하게 되는데, pr 후 머지를 한다던지, 릴리즈를 하게 되면 해당 브랜치를 보통 삭제를 하게 된다. 삭제하고 나면 나중에 커밋 메시지로 어느 브랜치인지 알수 없고, 한눈에 들어오지 않기 때문에 커밋 메시지에 자동으로 브랜치명을 추가하는 방법을 알아보도록 하자. 아무 repository 나 접근해서 cd .git/hooks 해보면 다음과 같다. .sample 확장자로 되어 있는 파일이 있는데, 이것들이 Git 에서 지원하는 Hook 입니다. 커밋 메시지에 자동으로 브랜치명을 추가할 것이니까 prepare-commit-msg 파일을 만들어야 한다. (.sample 확장자를 제거해 주면 된다.) 1. prepare-commit-msg 파일을 아래.. 2020. 11. 4. Webflux Functional Endpoints 시작하기 Webflux 는 아래 처럼 두개의 프로그래밍 모델을 지원하는데, 이번글에서는 Functional 방식을 알아보도록 하자 Functional routing and handling Annotation-based reactive components 1. RouterFunction RouterFunction 은 기존 개발자에게 익숙한 @RequestMapping 어노테이션과 동일한 역활을 한다. 하지만 가장 큰 차이점은 RouterFunction 은 동작까지 정의한다라는 것이다. @RequiredArgsConstructor @Configuration public class Router { private final PersonHandler handler; @Bean public RouterFunction per.. 2020. 9. 30. JPA Fetch Join과 페이징 문제 JPA 로 개발을 할때, 컬렉션을 Fetch Join 하면 페이징 조회 시 메모리에서 페이징 처리하는 문제가 있다. 데이터가 적으면 크게 상관은 없겠지만, 데이터가 많다고 한다면 큰 문제가 발생하게 된다. 아래와 같은 경고 메시지가 출력된다. 경고 메시지 HHH000104: firstResult/maxResults specified with collection fetch; applying in memory! 아래와 같이 엔티티를 정의해 보자 @Entity public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; @ManyToMany(mappedBy = .. 2020. 9. 22. 이전 1 2 3 4 5 다음