지난번에 Springdoc 사용법 이래가지고 글도 쓰고 이렇게 쓰면 잘 된다고 했었다. 지금도 프로젝트 새로 만들어서 전에 썼던 글대로 진행을 하면 잘 된다. 하지만 이미 개발이 완료된 어떤 프로젝트가 있었는데 여기에 Springdoc을 적용하려 하니 위와 같은 문제가 발생한다. [WARN ][org.springframework.web.servlet.PageNotFound.noHandlerFound:line1275] - No mapping for GET /swagger-ui/index.html 다 안되는건 아니다. swagger-ui 관련된 기능만 안된다. http://localhost:8080/v3/api-docs/swagger-config -> 200 OK http://localhost:8080/v3..
기존에 web.xml에서 설정하던 session timeout 설정이 web.xml 파일이 없어짐에 따라 이 설정을 application.yml (or application.properties) 파일에서 해야한다. AS-IS (web.xml) 60 TO-BE (application.yml) server: servlet: session: timeout: 1800 위와 같이 매우 간단하게 적용할 수 있다. 뒤에 단위를 안붙이면 기본 시간의 단위는 초(s) 이다. (1800초면 30분) 단위를 붙여서 1800 대신 30m, 1800s 와같이 표현할수도 있다. springboot version 1.x 에서는 server.session.timeout 을 사용하고 springboot version 2.x 에서는 위..
Spring을 몇년동안 계속 써왔고 내가 잘한다고 생각되는 부분은 어느 상황에서 어느 library가 필요하고 이건 Spring의 몇 버전과 호환이 되고 설정파일(applicationContext)은 어떻게 구성을 해야 하고 등등 AA가 해야 할 일들이었다. 즉 개발 외적인 부분들에 대해서 많이 익숙한 상태였다. 하지만 Springboot가 나오면서 내가 잘하는 부분이 사라졌다. 왜냐면 이런 고민들을 하지 않게 나온것이 바로 Springboot이기 때문이다. 뭐든 좀 공부해서 잘한다 싶으면 기술이 빠르게 바뀌어 다시 초기화 상태가 되어버리는것 같다. 잡설은 그만하고 주요 차이점들에 대해 살펴보겠다. dependency 관리 위에서 언급한대로 예전에 Spring으로 프로젝트 하나 구성을 하려면 필요한 라이..
어떻게 하면 Springboot을 조금 더 빠릿빠릿하게 만들 수 있을까 찾아보았다. 지금 사용하고 있는 최신버전(2.5.4)도 만족스럽게 사용하고 있지만 찾아보면 자료가 있을것 같았다. 마침 좋은 자료가 있어서 공유하고자 한다. 이것저것 해보고 현실적이고 괜찮다고 느낀건 빨간색으로 표시를 해 놓았다. How do I make my app go faster? You are mostly going to have to drop features, so not all of these suggestions will be possible for all apps. Some are not so painful, and actually pretty natural in a container, e.g. if you are bu..
Spring을 사용하면 Controller에서 Session을 가지고 오는것은 매우 간단하다. 하지만 Util에서 쉽게 Session 정보를 가지고 오고 싶을때는 어떻게 해야 할까? 바로 RequestContextHolder를 사용하는 방법이 있다. 설정방법 일단 RequestContextHolder를 사용하기 위해서는 RequestContextListener가 필요하다. 이것을 설정하지 않으면 다음과 같은 오류가 발생하니 먼저 설정을 해주도록 하자. java.lang.IllegalStateException: No thread-bound request found 오류 XML로 설정되어 있던 spring web application context를 Java Config 로 변환하는 과정에 오류가 발생하였다..
spring version을 올렸더니 custom interceptor에서 HandlerInterceptorAdapter가 deprecated가 되었다고 나온다. spring 5.3 version 이상에서는 HandlerInterceptorAdapter 를 사용하는 대신 HandlerInterceptor를 implements 해서 사용하는 방식으로 바뀌었다고 한다. (필자는 springboot 2.3.x to 2.5.x 로 변경하니 spring version 이 5.3 이상으로 올라가서 이렇게 되었다.) 따라서 interceptor를 만들때는 위와 같이 HandlerInterceptor를 implements 해서 사용하도록 하자. 기존 방식과 차이점은 HandlerInterceptorAdapter를 사용..
springboot version을 2.3.x에서 2.5.x로 migration을 하였다. 다른 기능은 다 잘 되는데 한가지.. 바로 기동시킨 application의 port가 unknown port로 표시가 되었다. 표시만 이렇게 되고 기동시에는 내가 지정한 port로 정상적으로 잘 기동이 된다. sts dashboard에 display 시에만 이렇게 보인다. 개발을 하는데 있어서 엄청나게 크리티컬한 이슈는 아니지만 성격상 잡고 넘어가야 마음이 편하다. 일단 증상은 springboot version up을 하고 발생을 했으니 최신버전의 server.port 설정이 변경이 되었나 mig guide를 살펴보았으나 그런건 없었다. 혹시 springboot version을 내가 사용하고 있는 sts가 지원을 ..
프로젝트를 진행 시 phase(local, dev, prd..)에 따라 다른 resource를 바라봐야 할 때가 있다. 예를들면 DB 같은 경우이다. dev(개발)에서는 개발 DB를 바라보고 prd(운영)에서는 운영 DB를 바라봐야 한다. 이것뿐만 아니라 많은 설정들이 개발이냐 운영이냐에 따라 바뀌어야 한다. 이럴때 소스의 변경 없이 profile 으로 손쉽게 갈아끼울수 있다. springboot에서는 어떻게 spring profile을 설정하는지 알아보자. Spring Profile 설정방법 (application.yml) server: port: 8080 servlet: context-path: / session: timeout: 1800 spring: datasource: driver-class-n..