어제 spring5의 reactive-web을 기반으로 스터디를 진행했다.
그런데 소스 코드는 똑같은데 handler와 router를 분리해서 개발하는 방식으로 구현했더니 계속해서 404가 발생했다. 분명 나와 같은 코드인데 아무리 디버깅을 해도 해결할 수 없었다. 원인은 depedency에 있었다.
depedency가 다음과 같이...
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-webflux')
위 dependency에서 spring-boot-starter-webflux만 설정해야 하는데 spring-boot-starter-web까지 추가해 발생하는 이슈였다. 처음 시작할 때 같은 실수를 반복할 것 같다. 이 둘은 동작방식이 다르기 때문에 별개로 추가하고 사용하는 것이 맞겠다.
예제로 사용한 코드는 다음과 같다.
import org.springframework.stereotype.Component
import reactor.core.publisher.Mono
@Component
class HelloWorldHandler {
fun helloworld() : Mono<String> {
return Mono.just("Hello World")
}
}
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.reactive.config.EnableWebFlux
import org.springframework.web.reactive.function.server.RouterFunction
import org.springframework.web.reactive.function.server.ServerResponse
import org.springframework.web.reactive.function.server.body
import org.springframework.web.reactive.function.server.router
@Configuration
class RoutingConfiguration {
@Bean
fun routeFunction(handler: HelloWorldHandler) : RouterFunction<ServerResponse> = router {
("/").nest {
GET("/helloworld2") { req ->
ServerResponse.ok().body(
handler.helloworld()
)
}
}
}
}
코틀린 코드라 자바와 좀 다르다.
0개의 의견 from SLiPP
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.