Table of Contents
In this tutorial, we will see about Spring boot profiles.
Need for profiles
Application development is complex process. You might have different environment for application development.
- Dev
- SIT
- QA
- Prod
We require different configuration based on the environment.
For example: Using a different database or different queues.
Let’s create a simple spring boot application.
Step 1: Go to https://start.spring.io/
and create spring boot projects as per below screenshot.
Step 2: Import the maven project in eclipse.
step 3: Create a package named "org.arpit.java2blog.controller"
create a controller class named "HelloWorldController.java"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package org.arpit.java2blog.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class WelcomeController { @Value("${message}") String message; @GetMapping("/welcome") public String getMessage() { return "Hi "+message; } } |
Step 4: Put “message=java2blog” in application.properties.
1 2 3 |
message= java2blog |
Step 5: Create a package named “org.arpit.java2blog”
create a class named “SpringBootHelloWorldApplication.java”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package org.arpit.java2blog; package org.arpit.java2blog; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootProfileExample { public static void main(String[] args) { SpringApplication.run(SpringBootProfileExample.class, args); } } |
Step 6: Run the application
When you run above application, you will get below output:
…
2018-08-03 10:40:21.649 INFO 27143 — [ main] o.a.java2blog.SpringBootProfileExample : Started SpringBootProfileExample in 4.693 seconds (JVM running for 5.474)
2018-08-03 10:40:36.761 INFO 27143 — [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet ‘dispatcherServlet’
2018-08-03 10:40:36.762 INFO 27143 — [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet ‘dispatcherServlet’: initialization started
2018-08-03 10:40:36.789 INFO 27143 — [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet ‘dispatcherServlet’: initialization completed in 27 ms
Step 7:Go to browser and browse url “http://localhost:8080/welcome”
As you can see, we are able to fetch “message” from application.properties.
Profiles for environment specific properties
Let’s configuration two profile- dev
and prod
for demonstration.
You need to create .properties file with application-"$ProfileName"
.
For example:
For dev profile, you need to crate application-dev.properties
, so whatever you put in application-dev.properties, it will override properties from application.properties.
Suppose you need to start qa profile at port “8081”, you can put following entry in application in application-qa.properties
1 2 3 |
server.port=8081 |
Let’s create two properties file for our application.
For dev profile
1 2 3 |
message = java2blog from dev |
For prod profile
1 2 3 |
message = java2blog from prod |
Setting active profile
When you run spring boot application, you need to set active profile. There are multiple ways to set active profile.
- By using
-Dspring.profiles.active=dev
in VM Arguments - By using
spring.profiles.active=dev
 in application.properties
Let’s run the application with dev
profile now. We will put spring.profiles.active=dev
in VM arguments and click on run.
When you run the application and browse http://localhost:8080/welcome”.
Spring boot @Profile annotation
You can use @Profile annotation in java configuration to create profile based configuration.
Project Structure
Source code
That’s all about Spring boot profiles.