b

springboot 2.0의 RouterFunction 스캐닝 방법 본문

spring framework

springboot 2.0의 RouterFunction 스캐닝 방법

dev.bistro 2017. 4. 25. 10:07


spring 5.0 이후 RouterFunction을 이용하여 EndPoint를 구현 할 수 있다. 이 RouterFunction을 스프링 빈으로 만들면 기존의 @Controller와 동일한 포지션의 역할을 수행하는데 어떻게 스캐닝을 하는걸 까?


Springboot 2.0 은 아직 개발중이지만, 그 안에서 확인 할 수 있다.

링크 를 보면

@ConditionalOnMissingBean(RouterFunction.class)
@ConditionalOnBean(RouterFunction.class)

즉, RouterFunction의 스프링 존재 여부에 따라 분기를 타고 AnnotationConfig, FunctionalConfig 설정을 적용하게 된다. 

즉 현재 기본 설정으로는 RouterFunction Bean, Controller Bean을 동시에 스캐닝 해주지 않는다 ('기본설정'에서')


1. List<RouterFunction<T>> routerFunctions 을 파라미터로 주입받아 하나의 RouterFunction으로 재구성한다. 

2. 오더링 하고, 기본 DefaultHandlerStrategiesBuilder, ViewResolvers를 설정한다.

3. WebHandler를 구성한다. 실제 구현 클래스는 HttpWebHandlerAdapter 이다. (만약 기존의 방식이었다면, 새롭게 WebHandler 인터페이스를 상속받는 DispatcherHandler 가 처리하게 된다)

Comments