분류 전체보기 (461) 썸네일형 리스트형 프론트 컨트롤러 // 스프링 컨테이너 프론트 컨트롤러 servlet이 여러개로 늘어나고 모든 서블릿이 container로 부터 요청을 직접받아 수행하고 return하는 방식으로 코드를 만드니까 대부분 서블릿에서 공통으로 하는 일들도 중복되는 코드로 나타났다. 서블릿은 웹 요청과 응답을 직접적으로 다뤄줘야 하기 때문에 자연스럽지 않다 그래서 서블릿만 가지고 기능을 개발하는데에는 한계가 있다. 이를 개선하기 위한 첫번째 시도는 frontController이다. 원래의 서블릿은 url에 맞게 mapping해서 각기 다른 서블릿이 각기 다른 url을 맡아서 처리하는 방식으로 동작을 해야 했는데 그렇게 하지 말고 모든 서블릿에 공통적으로 등작하는 처리하는 코드를 중앙화된 제일 앞단에 존재하는 컨트롤러라고 이름을 붙이고 공통적인 작업을 처리하고 요청에.. dsf HTTP 요청과 응답 Accept : 모든 컨텐츠 타입을 수용하겠다, html만 받고 싶 스프링부트의 컨테이너리스 servlet container와 관련된 번거롭고 복잡한 지식이나 작업을 요구하지 않고 spring container 에 들어가는 애플리케이션 코드 빈이라고 불리는 component개발에만 집중하고 servlet container와 관련된 설치 배포 관리에 대해 신경쓰지 않도록 구성하는 작업에 대해서 살펴보자 우리의 관심사는 Servlet container를 직접 설치하지 않고 어떻게 동작하게 만들 것이냐 직접 신경쓰지 않도록 할 것이냐가 관건이다. Servlet container를 설치하는 대신 stand alone 프로그램을 만들고 이 servlet container를 띄워주는 작업을 해.. 토비의 스프링부트 스프링 부트의 특징 1. 스프링 기반 어플리케이션 2. 실무환경에 필요한 수준 3. 독립 수준 어플리케이션 4. 빠르게 복잡한 없이 부트가 스프링 버전을 결정하지만 스프링과 스프링 부트는 다르다는 것을 인지해야 한다. 스프링 부트의 핵심 목표 1. 매우 빠르고 광범위한 영역의 스프링 개발 경험을 제공 2. 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공하면서, 필요에 따라 원하는 방식으로 손쉽게 변형 가능 (빠르고 기술 고민 없이 개발할 수 있도록 도와줌) 3. 프로젝트에서 필요로 하는 다양한 비기능적인 기술(내장형 서버, 보안, 메트릭, 상태 체크, 외부 설정 방식 등) 제공 4. 코드 생성이나 XML 설정을 필요로 하지 않음. 전통적으로 스프링 웹어플리케이션은 컨테이너 안에 배포를 하고 동작하.. 애자일 & 스크럼 프로젝트 관리 3.2 개발 방법론 첫째, 방법론에서 제시히는 출물을 어떤 목적으로 활용하는지 잘 따져 보아야 한다. 둘째, 개발 방법론을 개발 기간 내내 그대로 가져가서는 안 된다. - 평가 개선이 필요 개발 생명주기 (l fecycle)는 개발 단계의 집합이며 제품을 어떤 전략으로 개발 할 것인지 결정하는 접근 방식이다. 3.2.1 폭포수 개발 요구 분석 -> 설계 -> 구현 -> 테스트 -> 이행 고객은 실제 제품을 프로젝트 후반부에 가서야 확인이 가능하고, 후반에 요구사항이 변경되는 단점이 있따. 이를 극복하기 위해 프로토 타입 개발 방법을 사용하기도 한다. 프로토 타입 개발 방법 요구 분석 -> 프로토타입 개발 -> 고객 평가 -> 설계 -> 구현 -> 테스트 -> 이행 3.2.2 점진적 개발 이 방식은 제품을.. SimpleFlow 예 flow는 또다른 flow를 구성할 수 있다 . 아키텍처를 살펴보자. flowbuilder에서 step이라는 type의 객체를 설정했다면 내부적으로 flowbuilder는 stepstate라는 객체를 만들고 이 객체안에 step을 저장한다. on 메서드에는 Exitstatus 값과 매칭되는 값을 설정할 수 있다. flow type 객체를 생성하면 flowstate라는 객체를 생성하고 flow를 저장한다. decider type의 객체를 설정하면 내부적으로 DecisionState 객체를 생성하고 JobExecutionDecider를 저장한다. SplitState는 여러 flow를 병렬적으로 동시에 실행하고자 할 때 SplitState api를 사용한다. StateTransition이라는 클래스가 있다. .. 스프링 배치 - SimpleFlow 1. 기본 개념 simpleFlow는 state를 가지고 있고 state는 안에 있는 요소들을 (Step, Flow, JobExecutionDecider) 다시 실행시키는 형식이다. 각각의 메서드를 계속 실행시키는 메서드가 resume이다. simpleFlow가 수행하는 비중이 크고 flowjob을 구성했을 때 여기에 대한 api 와 설정들이 simpleFlow 속성들에 다 저장이 되고 simpleFlow가 모든 흐름들을 제어하기 때문에 simpleFlow의 내부적인 동작이나 원리를 이해하는 것이 중요하다. simpleFlow는 각각의 속성들을 아래와 같이 가지고 있다. simpleFlow의 중요한 속성인 state를 알아보자. state는 handle 메서드를 통해서 start, next에 설정한 요소.. Flowjob architecture Job에는 두가지 종류가 있다. SimpleJob FlowJob - 내부적인 프로세스가 차이가 있다. 조금 더 복잡하고 , SimpleFlow 객체를 가지고 있는데 이게 흐름을 handling 하고 있다. JobLauncher가 FlowJob을 실행시킨다. (JobParameters를 가지고 JobLauncher를 실행하는데, JobInstance, JobExecution Executioncontext 객체를 생성한다.) FlowJob은 FlowExecutor를 가지고 job을 실행한다. FlowExecutor가 simpleFlow를 실행시킨다. SimpleFlow가 모든 항목들을 가지고 있다. (Flow를 실행시킴으로 인해 발생되는 모든 것을 가지고 있다.) SimpleFlow는 state라는 속성이 .. 스프링 배치 - JobExecutionDecider flowJob 을 구성할 때 stop on to end를 연결하여 하나의 flow를 연결하였다. step은 일종의 buisiness 로직을 담는 부분인데 stop on to end와 강한 결합이 생기고 on to end 이런 api가 복잡하게 구성될 수 있다. 여러 step을 구성하다보면 전체적인 step을 파악하기가 어렵다. jobExecutionDecider는 Transition 처리를 위한 전용 클래스 이기 때문에 내부적인 로직을 통해 flow 흐름을 제어할 수 있다. 훨씬 간단하게 심플하게 구성할 수 있다. transitional api를 사용하는 보다 더 깔끔하게 구성할 수 있다. configuration package io.springbatch.springbatch.jobExecutionDec.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 58 다음