Spring(20)
-
리액티브 스트림즈, 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 Web MVC web.xml 분석
web.xml이란? web.xml은 DD(Deploymeet Descriptor, 배포 설명자)이며, Web Application의 설정 파일이다. 즉, 웹 어플리케이션을 실행시킬 때 함께 올라가야할 설정을 정의해놓은 것이다. web.xml 구성 web.xml은 크게 DispatcherServlet, ContextLoaderListener, Filter로 나뉜다. DispatcherServlet HTTP 프로토콜로 매핑되는 요청을 받아 적합한 컨트롤러에게 위임해주는 역할을 한다. 어플리케이션으로 들어오는 모든 요청을 핸들링하고 공통 작업을 처리한다. 클라이언트 요청을 다음과 같은 순서로 처리한다. 1. 클라이언트 요청을 처리해줄 컨트롤러 탐색 (HandlerMapping 객체가 처리) 2. 컨트롤러 실행..
2022.01.30 -
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 -
템플릿/콜백 패턴 예시, 익명 클래스를 람다식으로 변환
간단한 템플릿/콜백 예제를 하나 만들어보자. 파일을 하나 열어서 모든 라인의 숫자를 더한 합을 돌려주는 코드를 만들어보겠다. 우선 숫자가 담긴 numbers.txt파일을 하나 먼저 만든다. 1 2 3 4모든 라인의 숫자의 합은 10이다. numbers.txt파일의 경로를 주면 10을 돌려받는 메서드에 대한 테스트를 제작해보자 public class CalculatorTest { @Test public void sumOfNumbers() throws IOException { Calculator calculator = new Calculator(); int sum = calculator.calcSum("C:\\tobyTest\\src\\test\\java\\springbook\\callbackSample\\..
2022.01.17 -
중첩클래스와 익명 클래스로 클래스 파일 간소화
이전 포스팅에 작성한 코드들을 다시 살펴보자 public class UserDao { private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void add(User user) throws SQLException { StatementStrategy st = new AddStatement(user); jdbcContextWithStatementStrategy(st); } public User get(String id) throws SQLException { Connection c = null; PreparedStatement ps = null; R..
2022.01.17