How can I register a secondary servlet with Spring Boot?

后端 未结 7 678
感动是毒
感动是毒 2020-11-30 19:29

I have an extra servlet I need to register in my application. However with Spring Boot and its Java Config, I can\'t just add servlet mappings in a web.xml file

7条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-11-30 19:50

    Also available in the BeanDefinitionRegistryPostProcessor

    package bj;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.beans.factory.support.BeanDefinitionRegistry;
    import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
    import org.springframework.beans.factory.support.RootBeanDefinition;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @SpringBootApplication
    class App implements BeanDefinitionRegistryPostProcessor {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    
        @Override
        public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
            registry.registerBeanDefinition("myServlet", new RootBeanDefinition(ServletRegistrationBean.class,
                    () -> new ServletRegistrationBean<>(new HttpServlet() {
                        @Override
                        protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
                            resp.getWriter().write("hello world");
                        }
                    }, "/foo/*")));
        }
    
        @Override
        public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
        }
    }
    

提交回复
热议问题