Spring(11)
-
리액티브 스트림즈, Mono, 그리고 Flux
Mono 0 또는 1개의 결과를 가지는 데이터 스트림 서블릿 스택에서의 Optional과 유사 Flux 0개 이상의 데이터 방출 서블릿 스택에서의 List와 유사 리액티브 스트림즈 핵심 컴포넌트 Publisher : 스트림 데이터를 생성/방출 subscriber에게 데이터 전달 Mono와 Flux도 Publsiher 타입 Subscriber : Publisher에 방출된 데이터를 처리 publisher에게 받은 데이터를 소비하거나 다른 작업 수행 가능, 백프레셔를 통해 데이터 흐름 조절 가능 subscription : Publisher와 Subscriber 간의 연결을 나타냄. Subscriber는 Subscription을 통해 Publisher의 데이터를 요청/취소 가능 Processor : Publi..
2023.07.14 -
Reactive programming - Spring webflux
리액티브 프로그래밍 - 데이터가 변경될 때마다 이벤트를 발생시켜 데이터를 계속적으로 전달하는 것 - 실행할 동적을 구체적으로 명시하는 명령형 프로그래밍과 달리 단순히 목표(함수)를 선언 Webflux 비동기적인 웹 애플리케이션을 개발하기 위한 모듈 더 많은 동시 요청 처리, 더 빠른 응답 시간과 확장성 제공 reactor 반응형 스트림 라이브러리 기반 동작 동기 / 비동기 요청한 작업에 대해 완료 여부를 신경써서 작업을 순차적으로 수행하는지 여부 동기 : 다른 작업을 요청한 후 해당 작업이 완료되면 바로 해당 작업을 진행(완료가 되면 즉시 처리) 비동기 : 작업을 요청되고 완료를 기다리지 않고 다른 작업을 실행(한 작업이 완료되기를 기다리지 않고 다른 작업 실행, 완료가 되어도 즉시 처리하지 않음) 작업..
2023.07.14 -
Spring boot oauth2로 로그인하기
oauth2의 인증 진행 과정은 다음과 같다 1. gradle dependency 설정 dependencies { implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.boot:spring-boot-starter-web-services' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client:2.4.2' implementation 'mysql:mysql-connector-java' ..
2022.02.13 -
JWT, 그리고 OAuth
JWT란? JWT란 Json Web Token의 약자로 인증에 필요한 정보를 암호화 시킨 토큰이다. 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달한다. 인증 과정 1. 사용자가 id와 password를 입력하여 로그인을 시도 2. 서버는 요청을 확인하고 secret key를 통해 Access token을 발급 3. JWT토큰을 클라이언트에 전달 4. 클라이언트에서 API를 요청할 때 클라이언트가 Authorization header에 Access token을 전송 5. 서버는 JWT Signature를 체크, Payload로부터 사용자 정보를 확인해 데이터를 반환 6. 클라이언트의 로그인 정보를 서버 메모리에 저장하지 않기 때문에 토큰기반 인증 메커니즘을 제공 JW..
2022.02.11 -
Intellij 에서 Spring MVC 프로젝트(Gradle) 생성
1. New Project 좌측 상단 File -> new -> project Gradle -> java 체크 -> Next 프로젝트명, 그룹ID 등 작성 후 Finish 2. Gradle.build 수정 plugins에 'war' 추가, dependencies에 spring-webmvc, servlet-api 추가 plugins { id 'java' id 'war' //new } group 'com.tutorial' version '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2' testRuntimeOnly 'org.junit.ju..
2022.01.28