用于自定义Servlet的Spring Boot Actuator

时间:2016-01-25 16:27:20

标签: java spring spring-boot

我注意到Spring Boot Actuator仅在您的应用程序使用Spring MVC( DispatcherServlet )来处理端点时才有效。默认情况下,如果将模块spring-boot-starter-web添加到项目中,则会包含此servlet。

一旦这个servlet存在,类 EndpointWebMvcAutoConfiguration 就会定制Spring MVC以支持端点和其他管理属性。

为了记录,我的应用程序实现了一个 Vaadin Servlet 来在屏幕上导航,所以在这种情况下有没有办法启用Spring Boot Actuator?

2 个答案:

答案 0 :(得分:1)

您无法重用EndpointWebMVCAutoConfiguration类,因为它在DispatcherServlet.class上是明确的条件。如果你看一下实现,你会发现Actuator对Spring MVC有很多依赖。

这会有点笨拙,但您可以考虑实施自己的自动配置类,其灵感来自EndpointWebMVCAutoConfiguration。

如果你走这条路,我祝你好运;)

答案 1 :(得分:0)

你可以同时拥有两者。如果您有VaadinServlet,可以尝试使用以下内容:

@SpringBootApplication
public class AdminApplication {

    @Bean
    public ServletRegistrationBean<SpringVaadinServlet> springVaadinServlet() {
        SpringVaadinServlet servlet = new SpringVaadinServlet();
        ServletRegistrationBean<SpringVaadinServlet> registrationBean = new ServletRegistrationBean<>(servlet, "/your-web-app/*");
        registrationBean.setLoadOnStartup(1);
        registrationBean.setName("VaadinServlet");
        return registrationBean;
    }
}

@SpringUI(path = "/")
public class VaadinUI extends UI {
    ...
}

请注意@SpringUI注释中需要注册名称,自定义servlet 映射URL 自定义路径

您可以找到正在运行的演示here