Spring Boot Web
Project sampling spring boot web. And some tricks with environment and profiles
Dependencies
- java 17
- kotlin 1.9
- maven 3.9
- spring-boot 3.2
How to build
bash
./mvnw compile packageHow to test
bash
./mvnw testHow to run
Via maven plugin:
bash
./mvnw spring-boot:runRunning executable jar file:
bash
java -jar target/project-012-0.0.1-SNAPSHOT.jarRun with another profile
You can pass the -Dspring.profiles.active=special to the jvm so spring will load the default application.properties AND the profile one:
bash
java -Dspring.profiles.active=special -jar target/project-012-0.0.1-SNAPSHOT.jarOr pass the -Dspring-boot.run.profiles=special to maven:
bash
./mvnw spring-boot:run -Dspring-boot.run.profiles=specialThis is useful to make your service environment aware.
Set profile and other properties using environment variable
Another option is to use an environment variable to change current profile. property values can be overridden in spring-boot using this strategy. The following override will work well on unix-like systems:
bash
SPRING_PROFILES_ACTIVE=special MY_MESSAGE="Hello to you!" java -jar target/project-012-0.0.1-SNAPSHOT.jarIt works with maven plugin as well:
bash
SPRING_PROFILES_ACTIVE=special MY_MESSAGE="Good day sir!" ./mvnw spring-boot:runEnvironment variables are the preferred way to tweak configurations in production mode.
Noteworthy
- This project was created using the spring initializr and a few properties added to pom.xml file.
- Name your profiles with simple, meaningful names.
- It is possible to load more than once extra profile, just provide a coma-separated list with their names.
- It's possible to set active profiles from code, see the test cases.
- As exercise, figure out how to make one extra profile get loaded by default.