'Spring'에 해당되는 글 2건

  1. 2017.07.07 SPRINGBOOT로 AWS LAMBDA 이용하기
  2. 2013.11.05 spring interceptor

SPRINGBOOT로 AWS LAMBDA 이용하기

spring framework 2017.07.07 09:52 posted by dev.bistro


결론적으로 @SpringBootApplication 과 Main method으로 시작되는 startup은 불가능하지만, 그 부분을 생성자 부분으로 변경한 다면 사용 가능하다. 다만, 첫  시작은 dependency lookup 방식으로 bean을 가져와야 한다.
(이건 올해 초 얘기고, 지금은 https://github.com/spring-cloud/spring-cloud-function 을 이용하면 된다)

테스트환경

  • intellij 2016.3
  • gradle
  • spring-boot 1.4.3

intellij Spring Initializr 의 셋팅

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-14-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-6-38-44

이후 build.gradle은 다음과 같이 셋팅하였다. boot를 이용한 gradle의  task package 나  assemble는 main이 없기때문에 사용이 힘들고 maven shade 플러그인이나 gradle shadow를 이용한다.

참고 build.gradle
( plugin : https://github.com/johnrengelman/shadow 는 몇년전에 PR 1줄 했네…)

이후 https://github.com/bistros/test-springboot-lambda 으로 프로젝트를 구동 시켜봤지만 단순히 String을 리턴하는데도 2초씩 걸린다.  (handleRequest에서 스프링 프로젝트를 초기화 하니 당연히 느릴수밖에… source link )

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-14-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-7-14-56

그래서 다음처럼 생성자에서 초기화하도록 수정 (source link) 하였다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-01-14-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-7-15-55


신고

spring interceptor

spring framework 2013.11.05 00:36 posted by dev.bistro


술먹고... 쓰는 블로그.

오늘 업무시간의 마지막에 spring interceptor 얘기가 나왔다. 안쓰니 계속 까먹는건 나이 떄문이겠지...

Interceptor은 HandlerInterceptor를 implement 한다. 일종의 필터이다. 이 녀석은 결국에는 HandlerExecutionChain 안에서 handler와 List<HandlerInterceptor> interceptorList 으로 존재한다.  (List이다) 

이 녀석은 마침에 doDispatch 에서 불러지고  

HandlerInterceptor[] interceptors = mappedHandler.getInterceptors(); 이후에 for문을 돈다. 

여기에서 상황에 맞게 아니지 순서에 맞게.. interceptor.preHandle, triggerAfterCompletion,,  interceptor.postHandle를 순회하면서 HandlerInterceptor의 3가지 method를 다 실행하는 것이다.

정리하지면

1. DispatcherServlet이 내부적으로 적용하는 Filter와 같은 기능이다.

2. List이다.  즉 order 가 있다 하지만 order를 정의할 수 없는 메소드가 없으므로.. 아마 설정이 읽는 순서가 실행 순서가 되겠다.

단순해서 ... 더 쓸 말이 없다...


DispatcherServlet src : https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java

참고 메소드 : applyPreHandle, applyPostHandle, triggerAfterCompletion

신고


티스토리 툴바