Add context path to Spring Boot application
If you use Spring Boot 2.0.0 use:
server.servlet.context-path
Why are you trying to roll your own solution. Spring-boot already supports that.
If you don't already have one, add an application.properties
file to src\main\resources
. In that properties file, add 2 properties:
server.contextPath=/mainstay
server.port=12378
UPDATE (Spring Boot 2.0)
As of Spring Boot 2.0 (due to the support of both Spring MVC and Spring WebFlux) the contextPath
has been changed to the following:
server.servlet.context-path=/mainstay
You can then remove your configuration for the custom servlet container. If you need to do some post processing on the container you can add a EmbeddedServletContainerCustomizer
implementation to your configuration (for instance to add the error pages).
Basically the properties inside the application.properties
serve as a default you can always override them by using another application.properties
next to the artifact you deliver or by adding JVM parameters (-Dserver.port=6666
).
See also The Reference Guide especially the properties section.
The class ServerProperties
implements the EmbeddedServletContainerCustomizer
. The default for contextPath
is ""
. In your code sample you are setting the contextPath
directly on the TomcatEmbeddedServletContainerFactory
. Next the ServerProperties
instance will process this instance and reset it from your path to ""
. (This line does a null
check but as the default is ""
it always fail and set the context to ""
and thus overriding yours).
If you are using Spring Boot, then you don't have to configure the server properties via Bean initializing.
Instead, if one functionality is available for basic configuration, then it can be set in a "properties" file called application
, which should reside under src\main\resources
in your application structure. The "properties" file is available in two formats
.yml
.properties
The way you specify or set the configurations differs from one format to the other.
In your specific case, if you decide to use the extension .properties
, then you would have a file called application.properties
under src\main\resources
with the following configuration settings
server.port = 8080
server.contextPath = /context-path
OTOH, if you decide to use the .yml
extension (i.e. application.yml
), you would need to set the configurations using the following format (i.e. YAML
):
server:
port: 8080
contextPath: /context-path
For more common properties of Spring Boot refer to the link below:
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html