Добавить контекстный путь к приложению Spring Boot

Я пытаюсь установить корневой контекст приложения Spring Boot программно. Причина корня контекста в том, что мы хотим, чтобы приложение было доступно изlocalhost:port/{app_name} и к нему добавляются все пути контроллеров.

Вот файл конфигурации приложения для веб-приложения.

@Configuration
public class ApplicationConfiguration {

  Logger logger = LoggerFactory.getLogger(ApplicationConfiguration.class);

  @Value("${mainstay.web.port:12378}")
  private String port;

  @Value("${mainstay.web.context:/mainstay}")
  private String context;

  private Set pageHandlers;

  @PostConstruct
  private void init(){
      pageHandlers = new HashSet();
      pageHandlers.add(new ErrorPage(HttpStatus.NOT_FOUND,"/notfound.html"));
      pageHandlers.add(new ErrorPage(HttpStatus.FORBIDDEN,"/forbidden.html"));
  }

  @Bean
  public EmbeddedServletContainerFactory servletContainer(){
      TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
      logger.info("Setting custom configuration for Mainstay:");
      logger.info("Setting port to {}",port);
      logger.info("Setting context to {}",context);
      factory.setPort(Integer.valueOf(port));
      factory.setContextPath(context);
      factory.setErrorPages(pageHandlers);
      return factory;
  }

  public String getPort() {
      return port;
  }

  public void setPort(String port) {
      this.port = port;
  }
}

Вот контроллер индекса для главной страницы.

@Controller
public class IndexController {

  Logger logger = LoggerFactory.getLogger(IndexController.class);

  @RequestMapping("/")
  public String index(Model model){
      logger.info("Setting index page title to Mainstay - Web");
      model.addAttribute("title","Mainstay - Web");
      return "index";
  }

}

Новый корень приложения должен быть наlocalhost:12378/mainstay, но он все еще находится по адресу.localhost:12378

Чего мне не хватает, так это то, что Spring Boot не добавляет корневой контекст перед отображением запроса?

Ответы на вопрос(9)

Ваш ответ на вопрос