전체글139 국제화처리를 위한 messageSource 빈에 대한 이슈 스프링 부트가 아닌 스프링 프로젝트에서는 applicationContext.xml 와 servlet-context.xml 가 따로 있다. applicationContext.xml 에서는 @Service @Repository @Component 빈 등록과 dataSource 관련 빈 등록 등을 작업. servlet-context.xml 에서는 web 과 관련된 설정들 @Controller 빈등록과 mvc 관련 config, 뷰리졸버 관련 빈 등록 등을 작업. 처음엔 messageSource 빈 등록을 servlet-context.xml 에서 했다. 보여지는 메세지만 로케일에 맞게 다국어 처리하는 거니 web 영역이라고 판단했다. 그런데 applicationContext.xml 에 등록된 빈은 servlet.. 2021. 6. 18. GET / POST 를 목적에 맞춰 사용하지 못한 케이스 1. 메뉴 클릭이고 화면 조회니까 get 이어야 하는데, jquery datatable 을 통해 만들어진, query string 이 너무 많아져서 limit 을 초과하는 에러가 발생했고 부득이 post 로 전송. 2. 앵귤러에서 # 를 스펙에 맞지 않게 사용함. 앵귤러는 url anchor 로써 동작이 아니라 앞부분에 붙여서 의도적으로 뒤에 path를 짜르도록 함. 그래서 url 에서 # 이후를 짤라버려서 request param 정보를 보낼 수 가 없어서 부득이 post 로 전송 (https://codecraft.tv/courses/angular/routing/routing-strategies/#_hashlocationstrategy) 3. 기존 시스템을 재개발하는 상황에서, 하위호환성을 맞춰야 하는.. 2021. 6. 18. Webclient Timeout 과 connection pool 전략 1) Webclient timeout 아래 코드를 보자. 다양한 timeout 옵션들이 있다. new ReactorClientHttpConnector( reactorResourceFactory, httpClient -> httpClient .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000) .doOnConnected(connection -> connection.addHandlerLast(new ReadTimeoutHandler(5) ).addHandlerLast(new WriteTimeoutHandler(5)) ).responseTimeout(Duration.ofSeconds(5)) // 0.9.11 부터 추가 ); ChannelOption.CONNECT_TIME.. 2021. 6. 11. WebClient 사용할때 주의 (2편) exchangeToMono 를 쓸 때 cf) WebClient 사용할때 주의 (1편) 에서 exchange 를 쓸 때 주의할 점을 하나 소개했는데, 이제 exchange는 deprecated 되었고 대신 exchangeToMono 나 exchangeToFlux 를 써야한다. 1) doOnSuccess 와 onErrorResume .exchangeToMono(clientResponse -> clientResponse.toEntity(String.class)) .doOnSuccess(clientResponse -> { if (clientResponse.getStatusCode() != HttpStatus.OK) { throw new RuntimeException("error"); } } ) .onErrorR.. 2021. 6. 10. request body 한번만 읽어올수 있는 제약 이전 글에서 Spring Cloud Gateway 에서 request body 정보를 요청당 한번밖에 못읽는다고 설명했는데 꼭 Spring Cloud Gateway 만의 문제는 아니다. 아래와 같이 @RequestBody 애노테이션을 통해 request body 정보를 HelloDto 객체에 맵핑 시켜주게 되면 추가적으로 request.getInputStream 요청을 하게 됐을 때 실패하게 된다. 즉 request body 를 한번밖에 못읽는 제약이 있다. @RequestMapping(value = "/hello") public Mono hello( HttpServletRequest request, @RequestBody HelloDto helloDto) throws Exception { byte[] .. 2021. 6. 9. Spring Web MVC 구조 논의 1편 Spring Web MVC 를 이용해 개발다보면 대부분 controller - service - dao 구조로 잡혀있다는것을 쉽게 볼 수 있다. controller(web) 는 http 요청을 받아 service 로 전달하고, 또 service 에서 리턴된 결과를 http 응답으로 전달한다. service(domain) 는 비지니스 로직을 수행해 dao 로 전달하고, 또 dao 에서 리턴된 결과를 갖고 비지니스 로직을 수행한다. dao(persistence) 는 service 에서 만들어진 데이터를 db 같은 persistence 영역으로 보내는 역할을 수행한다. 명확하게 딱딱 나눠져 있어 보이지만, 실제 개발하다 보면 그 경계가 모호해질 때도 있고 실수로 다른 계층으로 해야할일을 넘길 수 있다. Get.. 2021. 6. 6. 이전 1 ··· 16 17 18 19 20 21 22 ··· 24 다음