मैं एक स्प्रिंग बूट एप्लिकेशन संदर्भ रूट को प्रोग्रामेटिक रूप से सेट करने का प्रयास कर रहा हूं। संदर्भ रूट का कारण यह है कि हम चाहते हैं कि ऐप को एक्सेस किया जाए 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<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;
}
}
यहाँ मुख्य पृष्ठ के लिए सूचकांक नियंत्रक है।
@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
।
मुझे वह क्या याद आ रहा है जो स्प्रिंग बूट के कारण अनुरोध मानचित्रण से पहले संदर्भ रूट को नहीं जोड़ रहा है?