프로그래밍/spring
최근 아래와 같은 오류가 발생했다. org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes per JSON object: 262144 at org.springframework.http.codec.json.Jackson2Tokenizer.raiseLimitException(Jackson2Tokenizer.java:222) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 이전에 포스팅한 [Spring] DataBufferLimitException: Exceeded limit on max bytes to buffer : 26214..
최근 Spring의 버전 업데이트를 했는데 갑자기 WebClient에서 아래와 같은 에러가 발생한다. org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 at org.springframework.core.io.buffer.LimitedDataBufferList.raiseLimitException(LimitedDataBufferList.java:101) ~[spring-core-5.2.5.RELEASE.jar:5.2.5.RELEASE] Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 사용중..
Spring의 RequestMapping에는 path에 wildcard를 사용할 수 있다. doc 하지만 path variable을 선언하여 쓸때에는 wildcard를 사용할 수 없는데 아래와 같은 방법으로 하면 wildcard로 선언된 path에 대해서 controller method에서 variable로 얻을 수 있다. @RequestMapping(value = "/api/{*path}") public Mono wildcardPathVariable(@PathVariable("path") String path) { return Mono.just(path); } 호출 결과 GaryJ-Macbook-Pro ❯ curl http://localhost:8080/api/test/path/variable /tes..
1장에서 알아본 Application을 여러가지 환경에 배포하기 위한 Profile설정에 대해서 정리에 이어서 Profile을 활용한 실행 환경제어에 대해서 정리한다. 1장: Profile의 활용 - Gradle, Maven Build Profile과 Spring Profile 1장 마지막에 언급한 것처럼 각각의 Region에서 Api 호출에 대한 권한 데이터 확인을 서로 다른 방식을 사용한다 요구사항을 Profile로 해결해 보자. 갑자기 왜 필요했나? 먼저 이와 같은 요구사항이 생겨난 것은 Containerize하여 배포하기 위해 준비하면서 이다. 기존 서버에 구동시키는 Application과는 달리 Container는 외부 연동 시스템과 다같이 묶어서 배포하지 않는 이상 외부 종속성 문제가 발생할 ..
오늘은 Application을 여러가지 환경에 배포하기 위한 Profile설정에 대해서 정리한다. 먼저 여러 가지 환경이라는 것은 하나의 Application을 한국에 배포할 때, 일본에 배포할 때, Containerize하여 배포할 때 등등의 환경을 말한다 (간단하게 Region이라고 칭함). 각각의 Region에서는 서로 다른 외부|내부 의존성을 가질 수 있으며 그러기 위해서는 Region별로 Profile 분리 하여 빌드, 실행 할때 알맞는 의존성을 가지도록 설정해야 한다. 예시) 각각의 Region에서 서로 다른 Database를 사용함. 각각의 Region에서 Api 호출에 대한 권한 데이터 확인을 서로 다른 방식을 사용한다.(File base, DB base, Memory base 등등) Pr..
3. Spring BootSpring을 좀더 쉽게 사용하기 위한 도구 3.1 특징1. Tomcat, jetty 같은 웹서버가 내장되어 있어 stand-alone으로 작성, 빌드, 실행 가능.2. 메이븐의 pom.xml에 관리하는 라이브러리의 버전을 지정할 필요 없이 스프링 부트가 적절한 버전을 알아서 관리함.3. XML 파일로 설정하는 spring에 비해 java 파일로 설정을 관리 할 수 있음. 3.2 셋팅법.http://projects.spring.io/spring-boot/
2. Spring Web Framework2.1 전체 구조 2.2 Request 처리 흐름. (0. Filter 가 정의 되어 있다면 Filter를 먼저 통과함)1. Request -> DispatcherServlet : Request가 처음 들어옴2. DispatcherServlet -> Handler Mapping : DispatcherServlet이 Request를 분석하고 Mapping 중에서 Request와 동일한 Mapping을 찾음3. Handler Mapping -> DispatcherServlet : Handler Mapping에서 찾은 Controller를 DispatcherServlet에 전달.(4.0 interceptor가 정의 되어 있다면 interceptor를 통과함)4. Dis..
2. Spring Web Framework2.1 전체 구조 2.2 Request 처리 흐름. (0. Filter 가 정의 되어 있다면 Filter를 먼저 통과함)1. Request -> DispatcherServlet : Request가 처음 들어옴2. DispatcherServlet -> Handler Mapping : DispatcherServlet이 Request를 분석하고 Mapping 중에서 Request와 동일한 Mapping을 찾음3. Handler Mapping -> DispatcherServlet : Handler Mapping에서 찾은 Controller를 DispatcherServlet에 전달.(4.0 interceptor가 정의 되어 있다면 interceptor를 통과함)4. Dis..
웹 프로그래밍 시작하기1. 웹 프로그래밍?1.1. 기본적인 웹 구조서버 / 클라이언트 방식HTTP 프로토콜 사용 1.2. WAS (Web Application Server) 1.3. JSP (Java Server Pages)HTML + JAVA (text 파일 기반)예시 )1.4. Servlet JAVA 프로그래밍으로 웹 서버를 구현하기 위한 도구(class 파일 기반)Servlet Container내에서 동작 JSP로 작성된 프로그램은 아래와 같은 동작을 통해 Servlet으로 변환된후 최종 HTML로 변환됨 1.5. Model 1, Model 2(MVC)Model 1 : JSP에 모든 로직이 존재하는 구조. 하나의 JSP 파일을 보면 전체 로직을 볼수 있다. 프로젝트 크기가 커지면 복잡해져서 유지 보..
웹 프로그래밍 시작하기1. 웹 프로그래밍?1.1. 기본적인 웹 구조서버 / 클라이언트 방식HTTP 프로토콜 사용 1.2. WAS (Web Application Server) 1.3. JSP (Java Server Pages)HTML + JAVA (text 파일 기반)예시 )1.4. Servlet JAVA 프로그래밍으로 웹 서버를 구현하기 위한 도구(class 파일 기반)Servlet Container내에서 동작 JSP로 작성된 프로그램은 아래와 같은 동작을 통해 Servlet으로 변환된후 최종 HTML로 변환됨 1.5. Model 1, Model 2(MVC)Model 1 : JSP에 모든 로직이 존재하는 구조. 하나의 JSP 파일을 보면 전체 로직을 볼수 있다. 프로젝트 크기가 커지면 복잡해져서 유지 보..