我正在使用spring boot将monolith web服务拆分为几个微服务。为了减少重复的代码,我在不同的微服务中使用的maven模块中提取了共享部分。
monolith应用程序有一个运行状况检查页面,显示有关服务状态和一些debbuging信息的各种信息。它是用Spring MVC和jsp实现的。
我想在每个微服务中使用此视图。什么是最好的方法,而不重复视图/控制器?
我在考虑将web模块添加到包含控制器,视图,spring mvc设置的共享maven项目中...... 但我不确定在一个微服务中有两个Web模块是否合适。
答案 0 :(得分:1)
您是否考虑使用弹簧启动执行器来检索健康(以及更多)应用程序信息?
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready
然后,您可以使用另一个微服务从每个服务中检索该信息,或者只是检查它然后点击不同的端点(/ health,/ env等)。
<强>更新强>
如果你有自定义健康逻辑,你甚至可以为它实现自己的执行器端点。此外,您可以创建自己的库,以便在所有微服务中重用它:
46.4添加自定义端点
如果添加类型为Endpoint的@Bean,它将自动通过JMX和HTTP公开(如果有的话) 服务器可用)。 HTTP端点可以进一步自定义 创建一个MvcEndpoint类型的bean。你的MvcEndpoint不是 @Controller但它可以使用@RequestMapping(和@Managed *)来公开 资源。
<强> [提示] 强> 如果您将此作为库功能考虑添加一个 使用@ManagementContextConfiguration注释的配置类 密钥下的/META-INF/spring.factories org.springframework.boot.actuate.autoconfigure.ManagementContextConfiguration。 如果这样做,那么端点将移动到具有all的子上下文 如果您的用户要求单独管理,则使用其他MVC端点 港口或地址。以这种方式声明的配置可以是a WebConfigurerAdapter是否要添加静态资源(for 实例)到管理端点。