带有自定义contextPath的Springboot Interceptor addPathPatterns

时间:2018-09-19 15:42:47

标签: spring-boot kotlin contextpath

我有一个带有自定义contextPath(/ api)的springboot应用程序,该服务器在我的Servur中,但在我的开发计算机中的本地主机中没有。
所以我有一个rest控制器,如何映射以下网址:
 -在我的计算机上locathost http://localhost:8080/article/last-articles
 -在我的伺服器中https:/// api / article / last-articles

在我的应用中,我有一个HandlerInterceptorAdapter(FirebaseTokenInterceptor)像这样初始化

@Configuration
class WebMvcConfig : WebMvcConfigurer {
@Autowired
lateinit var firebaseTokenInterceptor : FirebaseTokenInterceptor

var logger = LogFactory.getLog(WebMvcConfig::class.java)

@Value("#{servletContext.contextPath}")lateinit private var contextPath : String

override fun addInterceptors(registry: InterceptorRegistry?) {
    super.addInterceptors(registry)
    logger.debug("contextPath : ${contextPath}")
    //take care about context path to adapt rules
    var articlePath = "${contextPath}/article/**"

    logger.debug("rule  : ${articlePath}")

        registry?.addInterceptor(firebaseTokenInterceptor)?.addPathPatterns(listOf(articlePath))
}
}

它可以在我的本地主机上运行,​​但不能在我的服务器上运行,不会调用拦截器。 我尝试在规则开头添加和不添加contextPath,结果相同。

登录服务器或确定

2018-09-19 15:03:34.972 DEBUG 1 --- [           main] c.p.e.api.configuration.WebMvcConfig     : contextPath : /api
2018-09-19 15:03:34.977 DEBUG 1 --- [           main] c.p.e.api.configuration.WebMvcConfig     : rule  : /api/article/**

0 个答案:

没有答案