본문 바로가기

java/스프링인액션

(10)
11 리액티브 API 개발 11.1~11.2 - 동민 11.3~11.4 - 워니 11.5~12.1 - 초밥 12.2 - 민이 12.3 - 가을 11.1 스프링 WebFlux 사용하기 스프링 프레임워크 WebFlux 리액티트 웹 프레임워크 매 연결마다 하나의 스레드 사용 비동기 웹 프레임워크 적은 수의 스레드로 더 많은 요청을 처리함. 스레드 블록킹 블록킹이 없다. 다중 스레드 이벤트 루핑 한 스레드 당 많은 요청을 처리할 수 있다. 데이터베이스, 네트워크 작업 모든 것이 이벤트로 처리된다. 요청이 처리 될때 스레스 풀 --> 작업 스레드 가져옴 작업 스레드 종료까지 : 요청 스레드 블록킹 됨 비용이 드는 작업이 필요하면 -> 해당 작업의 콜백을 등록 -> 병행으로 수행 -> 다른 이벤트 처리로 넘어감 -> 작업 완료 : 이벤트로 ..
Spring in Action https://livebook.manning.com/book/spring-in-action-fifth-edition/chapter-10/140 Chapter 10. Introducing Reactor · Spring in Action, Fifth Edition Understanding reactive programming · Project Reactor · Operating on data reactively livebook.manning.com 이미지랑 코드 복붙하기 좋은 곳 ㅋㅋ
10. 리액터 자바 스트림 리액티브 스트림 동기화, 한정된 데이터 작업 수행 무한 데이터셋 비동기 처리 지원 실시간 데이터 처리, 백 프레셔: 데이터 전달 폭주 방지 10.3.1~10.3.2 워니 반응형 프로그래밍 이걸 깨닫고 나면 새로운 세상이 열린다. https://www.youtube.com/watch?v=KDiE5qQ3bZI 코딩 중 오류의 소지가 될 수 있는 변수의 사용을 지양! 순수함수를 사용해서 프로그래밍 하는 것! 어떤 데이터를 특정 기준으로 걸러낸 다음 최초 몇개 만 추려내고 특정 형식으로 변환한 다음 한 문자열로 합치는 것 함수형이 아닌 걸로 값이 바뀔 수 있는 변수를 사용했으나 이제 사용하지 않는다 소프트웨어가 복잡해지면 오류가 생기겠죠? 코드에 노출된 변수들은 위험합니다. 3.1 리액티브 타입 생..
8. 비동기 메시지 전송 비동기 메시지 어플리케이션 간에 응답을 기다리지 않고 간접적으로 메시지를 전송하는 방법 ex) 타코 클라우드 웹 사이트 ------------------> 주방 주문 데이터 전송 8.1 JMS 메시지 전송 Java Message Service JmsTemplate 템플릿 기반의 클래스를 통해 JMS를 지원한다. 프로듀서 큐와 토픽에 메시지를 전송함 큐 토픽 컨슈머 메시지를 받는다 POJO plain Old Java Object 큐, 토픽에 도착하는 메시지에 반응하여 비동기 방식으로 메시지를 받는 자바 객체 브로커 메시지를 전달해줌 아파치 ActiveMQ 아파치 ActiveMQ Artemis 61616 포스 리스닝 1. JMS 설정 브로커 스타터 의존성을 빌드에 추가한다. org.springframewor..
[8.3] 카프카 사용하기 카프카란? 아파치 재단의 카프카는 pub-sub모델의 메세지 큐이고, 분산환경에 특화되어 설계되어 있다는 특징을 가짐으로써, 기존의 RabbitMQ와 같은 다른 메세지큐와의 성능 차이가 난다(훨씬 빠르게 처리한다). 그 외에도 클러스터 구성, fail-over, replication와 같은 여러 가지 특징들을 가지고 있다. 서버가 꺼진다. 갑작스럽게 전원이 내려가는 현상에서도 데이터를 손실없이 복구 할 수 있다. 데이터를 효과적으로 많이 처리할 수 있다. 데이터 전송 데이터를 가져옴 프로듀서: 데이터를 넣는다 컨슈머: 데이터를 가져간다 메세지 브로커다 특유의 아키텍처를 가진다. 클러스터: 높은 확장성 제공 토픽을 파티션으로 분할하여 메시지를 관리한다 RabbitMQ가 거래소, 큐를 사용 --> 메시지 처..
[6.3] 스프링 데이터 REST 6.1 Rest Controller 작성 @Controller @restController 다중 페이지 어플리케이션 MPA에 사용 클래스 내부에 있는 모든 요청 처리 메서드에 @ResponseBody를 지정하지 않아도 된다. CRUD로 작성 1. get 데이터 조회 @RequestMapping(path="/design") 1) 데이터 가져오기 ex) localhost:8080/design/recent 2) 아이디로 데이터 가져오기 ex) localhost:8080/design/{id} @GetMapping("/{id}") 2. post 데이터 전송, 입력 httpClient.post('http://localhost:8080/design', 보낼 데이터, 헤더).subscribe(taco => this.c..
[6.3] 전통적 웹 사이트 MPA Multi Page Application 서버에서 ---> 새로운 페이지 전송 --> 매번! SPA Single Page Application 전체 페이지를 --> 하나의 페이지에 담아 ---> 동적으로 화면 바꾸기 페이지 변경 안일어남. 그렇게만 보임. 데이터만 ajax로 받아옴. == CSR (Client Side Rendering) 껍데기는 그대로 있음 참고: https://www.huskyhoochu.com/what-is-spa/ @RequestMapping @GetMapping @RequestMapping 다목적 요청 처리 HTTP 메서드가 method 속성 지정 @GetMapping HTTP GET 요청 @Controller 뷰로 보여줄 값을 반환함 즉: html로 데..
챕터4 스프링 시큐리티 4.1 스프링 시큐리티 활성화 dependency 추가 1. 스프링 부트 시큐리티 스타터 2. 시큐리티 테스트 09be91f7-31c2-4ad3-b16d-fd8a30b574a2 이걸 불러오기만 해도 보안 구성이 제공된다. 모든 http 요청 경로는 인증되어야 한다. 어떤 특정 역할, 권한이 없다 로그인 페이지가 따로 없다 -------------------> 로그인 페이지 필요함 http 기본 인증을 사용해서 인증된다 ----------> 서로 다른 http 요청 경로마다 서로 다른 보안 규칙을 적용 ex)홈페이지, 사용자 등록 페이지는 인증이 필요하지 않음 사용자는 하나만 있다. 비밀번호는 암호화해 준다 4.2 스프링 시큐리티 구성 Encoded password does not look like BCr..