백엔드/Spring131 Reactive Streams Reactive Streams Reactive Streams 는 논블로킹 백프레셔를 이용한 비동기 데이터 스트림 처리 표준이다. Reactive Streams 을 사용하는 주목적은 Subscriber가 Publisher의 생산 속도를 제어하는 것이다. Reactive Streams 에는 네 가지 인터페이스가 있다. Publisher 데이터를 생성하고 내보낸다. Subscriber 데이터를 구독하고 통지 받은 데이터를 처리한다. Subscription Publisher, Subscriber 간에 데이터가 교환될 수 있도록 연결하는 역할을 하며, 전달 받을 데이터의 개수를 요청하고 구독을 해지한다. Processor Publisher, Subscriber 모두 상속받은 인터페이스이다. Reactive Str.. 2022. 4. 16. [webflux] PublishOn, SubscribeOn WebFlux를 사용하는데 있어서, publisher와 subscriber 모델의 개념을 이해하는데까지 시간이 많이 소요가 되었다. mvc로 개발할 때는 메서드 호출만 하면 결과값이 return이 되었다. webflux를 사용해 비동기식으로 개발을 할 때는 메서드만 호출해서는 원하는 결과를 얻기가 힘들다. webflux에서는 subscribe(구독) 을 해야 동작을 한다. PublishOn 신호 처리 스케줄링으로 onNext, onComplete, onError 가 지정된 Scheduler 의 스레드에서 신호 처리 스레드 설정 다음 PublishOn을 만날 때까지 같은 스레드에서 동작 안만나면 동작 끝내고 마침 SubscribeOn 시퀀스를 실행할 스레드를 결정 PublishOn을 만날 때까지 같은 스레.. 2022. 4. 15. Spring WebFlux WebFlux 란 WebFlux 는 Spring 5에서 새롭게 추가된 모듈이다. 클라이언트, 서버에서 reactive 스타일의 어플리케이션 개발을 도와주는 모듈이며 Non-blocking 에 reactive streams 의 BackPressure을 지원하며 Netty, Servlet3.1+ 컨테이너와 같은 서버에서 실행된다. 위의 그림은 각각의 기능들과 공통점에 대해 나와있다. 위는 전반적인 WebFlux의 구조이다. WebFlux 를 사용하기 전에 WebFlux 가 왜 생겨났는지 궁금했다. WebFlux 가 생긴 이유 적은 수의 스레드와 최소한의 하드웨어 자원으로 동시성을 처리하고 리소스를 확장하기 위해서 만들어졌다. 이는 새로운 공통 API 가 생긴 이유가 됐으며, tomcat 이 아닌 netty와.. 2022. 4. 14. [Intellij] JUnit Test 실행 시 No tests found for given includes Intellij에서 아래 Test 부분을 실행하는데 No tests found for given includes 다음과 같은 에러가 나면서 테스트가 실행되지 않았다. Preference 에서 아래 메뉴 위치로가서 다음을 사용하여 테스트 실행을 IntelliJ IDEA 로 변경하면 된다. 테스트 빌드가 완성된 것을 확인할 수 있다. 2022. 4. 14. [spring] @Test 빌드시 ' Cannot find symbol method' 에러 error: cannot find symbol 프로젝트를 만들고 빌드하는데 다음과 같은 에러가 나면서 프로젝트 빌드가 되지 않았다. 개발환경은 java 1.8 버전과 build.gradle 에서 진행했다. 다음과 같은 에러가 생긴것은 롬복을 사용하는데 annotationProcessor 를 사용하지 않아서 생긴 오류였다. 아래 내용을 추가해주고 리빌드하니 에러가 없어지고 빌드가 되었다. annotationProcessor 'org.projectlombok:lombok' AnnotationProcessor 란 일반적으로 어노테이션에 대한 코드베이스를 검사, 수정, 생성 하는데 사용된다. 본질적으로 java 컴파일러의 플러그인의 일종이다. gradle 에서 별다른 설정을 하지 않아도 gradle 자체에서 a.. 2022. 4. 13. [spring] Querydsl 사용이유 spring 에서 쿼리문을 사용할 때 querydsl, mybatis, jooq 를 사용할 수 있습니다. 이 querydsl, mybatis, jooq 세가지는 FK 의 조인, 복잡한 조건 등으로 인해 Entity 클래스 만으로 처리하기 어려워 추가로 사용하는 프레임워크 입니다. 그 중에서 Querydsl을 추천하는 이유는 다음과 같습니다. 1. 타입 안정성 보장 - 단순한 문자열로 쿼리를 생성하는 것이 아닌, 메소드 기반으로 쿼리를 생성하기 때문에 오타나 존재하지 않는 컬럼명을 사용할 경우 자동으로 확인이 가능합니다. (jooq 에서 지원하지만, mybatis 에서는 지원 안함) 2. 국내 많은 회사에서 사용중 - 쿠팡, 배민 등 JPA를 적극적으로 사용하는 회사에서 사용중입니다. 3. 많은 레퍼런스 .. 2022. 4. 12. 이전 1 ··· 7 8 9 10 11 12 13 ··· 22 다음