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

Как использовать область действия Application?

Добрый день!
По определению область действия Application привязана к ServletContext. Следовательно, бин, объявленный с областью видимости Application, может быть виден в нескольких DispatcherServlet. Но на практике не работает.

1. Определяю бин в контексте первого DispatcherServlet
@Configuration
@EnableWebMvc
@ComponentScan
public class MainWebConfig {
	
	@Inject
	ApplicationContext context;
		
	@Bean
	@ApplicationScope
	Printer printer()
	{
		return new Printer();
	}
}


2. Инициализирую первый DispatcherServlet
public class MainPackageInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{	
	
	
	@Override
	protected Class<?>[] getRootConfigClasses()
	{
		return null;
	}
	
	@Override
	protected Class<?>[] getServletConfigClasses()
	{
		return new Class<?>[] {MainWebConfig.class};
	}
	
	@Override
	protected String[] getServletMappings()
	{
		return new String[] {"/main/*"};
	}
	
	@Override
	protected String getServletName()
	{
		return "main";
	}	

}

3. Инициализирую второй DispatcherServlet
public class SecondPackageInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{	
	
	
	@Override
	protected Class<?>[] getRootConfigClasses()
	{
		return null;
	}
	
	@Override
	protected Class<?>[] getServletConfigClasses()
	{
		return new Class<?>[] {SecondWebConfig.class};
	}
	
	@Override
	protected String[] getServletMappings()
	{
		return new String[] {"/second/*"};
	}
	
	@Override
	protected String getServletName()
	{
		return "second";
	}	

}

4. В контроле из второго DispatcherServlet, использую бин, определенный в контексте первого DispatcherServlet.

@Controller
@RequestMapping("/")
public class SecondController {
	
	@Autowired
	Printer printer;
	
	@GetMapping
	String getSecond()
	{
		printer.print();
		return "second";
	}

}


Выдает исключение, что бин printer не найден!
  • Вопрос задан
  • 19 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы