- Spring Boot - Google OAuth2 Sign-In
- Spring Boot - Google Cloud Platform
- Spring Boot - OAuth2 with JWT
- Securing Web Applications
- Spring Boot - Database Handling
- Rest Controller Unit Test
- Spring Boot - Unit Test Cases
- Spring Boot - Twilio
- Spring Boot - Apache Kafka
- Spring Boot - Batch Service
- Spring Boot - Web Socket
- Spring Boot - Hystrix
- Spring Boot - Sending Email
- Spring Boot - Flyway Database
- Tracing Micro Service Logs
- Spring Boot - Creating Docker Image
- Spring Boot - Enabling Swagger2
- Spring Boot - Admin Client
- Spring Boot - Admin Server
- Spring Boot - Actuator
- Spring Cloud Configuration Client
- Spring Cloud Configuration Server
- Zuul Proxy Server and Routing
- Service Registration with Eureka
- Spring Boot - Eureka Server
- Spring Boot - Enabling HTTPS
- Spring Boot - Scheduling
- Spring Boot - Internationalization
- Spring Boot - CORS Support
- Consuming RESTful Web Services
- Spring Boot - Thymeleaf
- Spring Boot - Service Components
- Spring Boot - File Handling
- Spring Boot - Rest Template
- Spring Boot - Tomcat Port Number
- Spring Boot - Servlet Filter
- Spring Boot - Interceptor
- Spring Boot - Exception Handling
- Building RESTful Web Services
- Spring Boot - Logging
- Spring Boot - Application Properties
- Spring Boot - Runners
- Spring Beans & Dependency Injection
- Spring Boot - Code Structure
- Spring Boot - Build Systems
- Spring Boot - Tomcat Deployment
- Spring Boot - Bootstrapping
- Spring Boot - Quick Start
- Spring Boot - Introduction
- Spring Boot - Home
Spring Boot Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Spring Boot - Apppcation Properties
Apppcation Properties support us to work in different environments. In this chapter, you are going to learn how to configure and specify the properties to a Spring Boot apppcation.
Command Line Properties
Spring Boot apppcation converts the command pne properties into Spring Boot Environment properties. Command pne properties take precedence over the other property sources. By default, Spring Boot uses the 8080 port number to start the Tomcat. Let us learn how change the port number by using command pne properties.
Step 1 − After creating an executable JAR file, run it by using the command java –jar <JARFILE>.
Step 2 − Use the command given in the screenshot given below to change the port number for Spring Boot apppcation by using command pne properties.
Note − You can provide more than one apppcation properties by using the depmiter −.
Properties File
Properties files are used to keep ‘N’ number of properties in a single file to run the apppcation in a different environment. In Spring Boot, properties are kept in the apppcation.properties file under the classpath.
The apppcation.properties file is located in the src/main/resources directory. The code for sample apppcation.properties file is given below −
server.port = 9090 spring.apppcation.name = demoservice
Note that in the code shown above the Spring Boot apppcation demoservice starts on the port 9090.
YAML File
Spring Boot supports YAML based properties configurations to run the apppcation. Instead of apppcation.properties, we can use apppcation.yml file. This YAML file also should be kept inside the classpath. The sample apppcation.yml file is given below −
spring: apppcation: name: demoservice server: port: 9090
Externapzed Properties
Instead of keeping the properties file under classpath, we can keep the properties in different location or path. While running the JAR file, we can specify the properties file path. You can use the following command to specify the location of properties file while running the JAR −
-Dspring.config.location = C:apppcation.properties
Use of @Value Annotation
The @Value annotation is used to read the environment or apppcation property value in Java code. The syntax to read the property value is shown below −
@Value("${property_key_name}")
Look at the following example that shows the syntax to read the spring.apppcation.name property value in Java variable by using @Value annotation.
@Value("${spring.apppcation.name}")
Observe the code given below for a better understanding −
import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApppcation; import org.springframework.boot.autoconfigure.SpringBootApppcation; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApppcation @RestController pubpc class DemoApppcation { @Value("${spring.apppcation.name}") private String name; pubpc static void main(String[] args) { SpringApppcation.run(DemoApppcation.class, args); } @RequestMapping(value = "/") pubpc String name() { return name; } }
Note − If the property is not found while running the apppcation, Spring Boot throws the Illegal Argument exception as Could not resolve placeholder spring.apppcation.name in value "${spring.apppcation.name}".
To resolve the placeholder issue, we can set the default value for the property using thr syntax given below −
@Value("${property_key_name:default_value}") @Value("${spring.apppcation.name:demoservice}")
Spring Boot Active Profile
Spring Boot supports different properties based on the Spring active profile. For example, we can keep two separate files for development and production to run the Spring Boot apppcation.
Spring active profile in apppcation.properties
Let us understand how to have Spring active profile in apppcation.properties. By default, apppcation. properties will be used to run the Spring Boot apppcation. If you want to use profile based properties, we can keep separate properties file for each profile as shown below −
apppcation.properties
server.port = 8080 spring.apppcation.name = demoservice
apppcation-dev.properties
server.port = 9090 spring.apppcation.name = demoservice
apppcation-prod.properties
server.port = 4431 spring.apppcation.name = demoservice
While running the JAR file, we need to specify the spring active profile based on each properties file. By default, Spring Boot apppcation uses the apppcation.properties file. The command to set the spring active profile is shown below −
You can see active profile name on the console log as shown below −
2017-11-26 08:13:16.322 INFO 14028 --- [ main] com.tutorialspoint.demo.DemoApppcation : The following profiles are active: dev
Now, Tomcat has started on the port 9090 (http) as shown below −
2017-11-26 08:13:20.185 INFO 14028 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 9090 (http)
You can set the Production active profile as shown below −
You can see active profile name on the console log as shown below −
2017-11-26 08:13:16.322 INFO 14028 --- [ main] com.tutorialspoint.demo.DemoApppcation : The following profiles are active: prod
Now, Tomcat started on the port 4431 (http) as shown below −
2017-11-26 08:13:20.185 INFO 14028 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 4431 (http)
Spring active profile for apppcation.yml
Let us understand how to keep Spring active profile for apppcation.yml. We can keep the Spring active profile properties in the single apppcation.yml file. No need to use the separate file pke apppcation.properties.
The following is an example code to keep the Spring active profiles in apppcation.yml file. Note that the depmiter (---) is used to separate each profile in apppcation.yml file.
spring: apppcation: name: demoservice server: port: 8080 --- spring: profiles: dev apppcation: name: demoservice server: port: 9090 --- spring: profiles: prod apppcation: name: demoservice server: port: 4431
To command to set development active profile is given below −
You can see active profile name on the console log as shown below −
2017-11-26 08:41:37.202 INFO 14104 --- [ main] com.tutorialspoint.demo.DemoApppcation : The following profiles are active: dev
Now, Tomcat started on the port 9090 (http) as shown below −
2017-11-26 08:41:46.650 INFO 14104 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 9090 (http)
The command to set Production active profile is given below −
You can see active profile name on the console log as shown below −
2017-11-26 08:43:10.743 INFO 13400 --- [ main] com.tutorialspoint.demo.DemoApppcation : The following profiles are active: prod
This will start Tomcat on the port 4431 (http) as shown below:
2017-11-26 08:43:14.473 INFO 13400 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 4431 (http)Advertisements