Tôi đang cố gắng thiết lập một bối cảnh ứng dụng Spring Boot theo chương trình. Lý do cho gốc ngữ cảnh là chúng tôi muốn ứng dụng được truy cập từ đó localhost:port/{app_name}
và có tất cả các đường dẫn bộ điều khiển nối với nó.
Đây là tập tin cấu hình ứng dụng cho ứng dụng web.
@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<ErrorPage> pageHandlers;
@PostConstruct
private void init(){
pageHandlers = new HashSet<ErrorPage>();
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;
}
}
Đây là bộ điều khiển chỉ mục cho trang chính.
@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";
}
}
Root mới của ứng dụng nên có localhost:12378/mainstay
, nhưng nó vẫn nằm ở localhost:12378
.
Tôi còn thiếu điều gì khiến Spring Boot không nối thêm gốc ngữ cảnh trước khi ánh xạ yêu cầu?