Задать вопрос
@artemfisher

Как зарегистрировать Servlet как bean в Spring Boot?

Добрый день!
В документации по Spring Boot 3.5.3 сказано:
Any Servlet, Filter, or servlet *Listener instance that is a Spring bean is registered with the embedded container.

Пытаюсь зарегистрировать два Servlet во встроенном контейнере:

package com.springbootapp.main;

@SpringBootApplication(exclude= {DispatcherServletAutoConfiguration.class, ErrorMvcAutoConfiguration.class})
public class NewSpringBootAppApplication {

	public static void main(String[] args) {
		SpringApplication.run(NewSpringBootAppApplication.class, args);
	}
		
	@Bean
	public Servlet servletOne()
	{
		DispatcherServlet dispatcherServlet = new DispatcherServlet();   
        AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
        applicationContext.register(ConfigOne.class);       
        dispatcherServlet.setApplicationContext(applicationContext);
        return dispatcherServlet;        
	}
	
	@Bean
	public Servlet servletTwo()
	{
		DispatcherServlet dispatcherServlet = new DispatcherServlet();   
        AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
        applicationContext.register(ConfigTwo.class);
        dispatcherServlet.setApplicationContext(applicationContext);
        return dispatcherServlet;        
	}		
}


package dispOne;
@Configuration
@ComponentScan
@EnableWebMvc
public class ConfigOne {
		
}


package dispOne;
@Controller
@RequestMapping("/")
public class ControllerOne {
	
	@GetMapping("/")
	String getIndex()
	{
		System.out.println("ControllerOne getIndex");
		
		return "indexOne";
	}
}


Классы ConfigTwo и ControllerTwo лежат в пакете dispTwo и аналогичны, за исключением, что в ControllerTwo возвращается indexTwo.

View лежат в resources/templates/.

По итогу выдает ошибку 404. Методы контролера вообще не вызываются, т.к. в консоль не выводятся сообщения из этих методов.

В консоли такой вывод:
  1. GET "/servletOne/", parameters={}, headers={masked} in DispatcherServlet 'servletOne'
  2. Mapped to HandlerExecutionChain with [ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]] and 3 interceptors
  3. Resource not found
  4. [NewSpringBootApp] [nio-8080-exec-1] Resolved [org.springframework.web.servlet.resource.NoResourceFoundException: No static resource servletOne.]
  5. No view rendering, null ModelAndView returned.
  6. Completed 404 NOT_FOUND, headers={masked}
  • Вопрос задан
  • 14 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ИТРУМ Ростов-на-Дону
от 75 000 ₽
DIGITAL SECTOR Краснодар
от 250 000 до 450 000 ₽