본문 바로가기

개발/Spring

(14)
#3) Spring WebFlux(마블 다이어그램, Project Reactor, Backpressure) Reactor는 Spring Framwork의 주도하에 개발된 리액티브 스트림즈 구현체로 Spring 5버전부터 리액티브 스택에 포함되었다. Spring WebFlux 기반의 리액티브 어플리케이션 제작의 핵심 역할이다. 따라서 Reactor Core 라이브러리는 Spring WebFlux에 라이브러리로 포함되어 있다. 우선 마블 다이어그램에 대해서 익히고 이를 기반삼아 Reactor를 공부하는게 좋다. 1. 마블 다이어그램 마블은 구슬을 의미한다. 즉 여러 가지 구슬 도형으로 구성된 도표를 의미하고 Reactor에서 지원하는 Operator를 이해하는데 중요한 역할을 한다. 기본 구성 1. 두개의 타임라인이 위아래로 존재하는데 위부분은 Upstream이 데이터를 emit하는 타임라인이고 아래 부분 ..
#2) Spring WebFlux(리액티브 프로그래밍 특징, 리액티브 스트림즈) 리액티브 프로그래밍 특징 1. 선언형 프로그래밍 - 명령형 프로그래밍 vs 선언형 프로그래밍 : 간단하게 요약하자면 명령형 프로그래밍 방식은 실행할 동작을 구체적으로 명시하는 방식 선언형 프로그래밍은 실행할 동작을 구체적으로 명시하는게 아닌 목표만 선언하는 방식 2. 코드 구성 - Publisher : 입력으로 들어오는 데이터를 제공하는 역할 - Subscriber : Publisher가 제공하는 데이터를 사용하는 주체 - Data Source : Publisher의 입력으로 전달되는 데이터 - Operator : Publisher와 Subscriber 사이에서 데이터를 적절하게 가공 처리하는 담당 리액티브 스트림즈 리액티브한 코드 구성을 용이하게 해주는 라이브러리를 어떻게 구현할지 정의해 놓은 별도의 ..
#1) Spring WebFlux (함수 호출 관점 동기/비동기 Blocking/Non-Blocking, 함수형 인터페이스, WebFlux 장점) 함수 호출 관점에서 동기와 비동기 / Blocking과 Non-Blocking - 함수가 다른 함수를 호출 하는 상황일 때 caller: 호출 하는 함수 callee: 호출 당하는 함수 동기: caller는 callee의 결과에 관심이 있고 callee가 주는 결과 값을 이용해서 다음 action을 수행한다. 비동기: caller는 callee의 결과에 관심이 없고 callee는 결과 값을 이용하여 콜백을 수행한다. Blocking: callee를 호출 후, callee가 완료되기 전까지 caller는 아무것도 할 수 없다. 즉 제어권을 callee에게 줌, caller와 다른 별도의 스레드가 필요하지 않다. Non-Blocking: callee를 호출 후, callee가 완료되기 전에도 caller는..
Spring WebFlux 공부 시작 블로그 관리를 너무 안했.... 앞으로는 공부한 내용을 간단하게라도 꾸준히 적어보도록 노력하고자 한다!! 다시 돌아간 회사에서 신규팀 그리고 신규 프로젝트에 참여하였고 오픈한지 한달정도 지났다. 그리고 1월쯤 다시 새로운 프로젝트를 들어갈 예정인데 우리팀에 리더분이 리액티브 프로그래밍에 대한 장점을 열정적으로 전파해서 신규 프로젝트엔 webFlux기반으로 프로그램을 만들어 보기로 했다. 이번 프로젝트 때 간단하게 webFlux를 적용해서 개발한 부분이 있었지만 아주 미약한 지식으로 만든거라고 생각이 들었고 좀 더 깊게 공부를 해야겠다는 생각이 들었다..!! 패스트캠퍼스 웹플럭스 강의를 하나 팀원분이 끊었는데 공유해주셨다. 멋쟁이 개발자가 되기위해 완강해보자..아자아자 화이팅
#2) Spring Security Oauth2 Client + Apple 로그인 연동하기 build.gradle implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client', version: '5.6.3' implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.30.1' implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.70' application.yml application-oauth.yml를 include 한다. (application.yml에 spring security oauth2 client를 설정했다면 무시) sp..
#1) Spring Security Oauth2 Client + Apple 로그인 연동하기 이번에 인증 서버를 구축하면서 총 5개의 SNS 연동을 진행했다. (카카오, 네이버, 페이스북, 구글, 애플) 카카오, 네이버, 페이스북, 구글은 Spring Security Oauth2 Client로 연동하는 레퍼런스가 많아서 수월하게 진행했는데 애플은 다른 Provider(제공자 : 예를 들면 카카오, 네이버)의 OAuth2 인증방식과 다른 방식으로 사용자 정보를 넘기고 있어서 레퍼런스도 없고 해외에도 연동 예제가 없었다. 그래서 그냥 라이브러리를 분석해서 나의 방식대로 애플을 연동했는데 애플 로그인을 Spring Security Oauth2 Client에 연동하고자 하는 이들이 있으면 도움이 되고 싶어서 그 과정을 기록하고자 한다. 먼저 대부분의 Provider는 다음 그림과 같은 방식으로 동작한..
컴포넌트 스캔 간단 정리 컴포넌트 스캔이란 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능 @Component를 클래스에 붙여야 스프링이 Bean으로 등록한다. 설정 클래스에서 @ComponentScan 애노테이션을 적용해야 한다. 만약 특정 대상을 스캔에서 제외하고 싶다면 excludeFilters 속성을 사용한다. 다음 애노테이션을 붙인 클래스가 컴포넌트 스캔 대상에 포함된다. @Component @Controller @Service @Repository @Aspect @Configuration
스프링 DI(의존주입) 간단 정리 @Configuration : 스프링 설정 클래스를 의미 @Bean : 해당 메서드가 생성한 객체 스프링 컨테이너로 생성한 bean은 싱글톤 객체 스프링 컨테이너로 설정해야 getBean() 메서드를 이용해 사용할 객체를 구할 수 있다. 스프링 컨테이너는 조립기의 역할을 한다. DI 의존주입 방식 1. 생성자 방식 2. getter, setter 방식 @Autowired, @Resource : 의존 자동 주입 기능 *Autowired에서 자동 주입할 대상이 필수가 아닌 경우 1. required = false로 지정 (메서드 호출 X) 2. optional 사용 3. @Nullable 사용 (메서드 호출 O) @import : 두 개 이상의 설정 파일을 사용할 때 사용 객체를 스프링 빈으로 등록할 때와 ..

반응형