リファレンスにあったからやってみたけどやり方違ったって話
環境
Spring Boot 2.2.3.RELEASE - 2.2.4.RELEASE
Spring Fox 2.9.2
Kotlin 1.3.61
Gradle
環境は以下の記事のまんま
pathMapping使えばええやんって思ってた
コンテキストパスはapplication.propertiesで指定してるんですよ
server.servlet.context-path=/test
@Value
で拾ってきたプロパティをpathMapping
に入れればOK
@Configuration
@EnableSwagger2
class SwaggerConfig {
@Value("\${server.servlet.context-path:/}")
private val contextPath : String? = null
@Bean
fun configurateApiDocument(): Docket = Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.pathMapping(contextPath)
.
.
.
application.properties
からパラメータをとってくるときは@ConfigurationProperties
を使ったほうがいいっぽいけど、
パラメータ1つしかとってこないから@Value
でも問題ないかと
pathMapping
にnull
が入ってくるとまずいから、@Value
のデフォルト値に/
を指定しとく
いいね
... と思っていたんだけどダメっぽい
誤解していたところ
server.servlet.context-path
の記載があれば、
実は特に何も設定しなくてもコンテキストパスの反映はやってくれてる
よく見るとちゃんとBaseUrlにはコンテキストパスがついてる
テスト用のURLが、それぞれのAPIにもコンテキストパスをつけたせいで2つかぶったURLになっちゃってる
っていうこともできるよってくらいにしといたほうがいいかも
pathMappingは何に使うんだろう・・・