🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
🚀 Introduction to Spring Boot Profiles
Spring Boot Profiles allow applications to load different configurations based on the environment (e.g., development, testing, production).
✅ Why Use Spring Boot Profiles?
✔ Manage Environment-Specific Settings (Database, API Keys, Logging).
✔ Easily Switch Configurations without modifying code.
✔ Use Different Beans for Different Environments (@Profile).
✔ Avoid Hardcoding Environment Variables.
📌 In this guide, you’ll learn:
✅ How Spring Boot Profiles Work.
✅ Using application.properties and application.yml for Profiles.
✅ How to Load Beans Conditionally Using @Profile.
✅ How to Switch Between Profiles.
1️⃣ How Do Spring Boot Profiles Work?
Spring Boot Profiles allow you to define multiple environment-specific configurations and activate them dynamically.
📌 Common Profiles Used in Projects:
| Profile Name | Purpose |
|---|---|
dev |
Used in local development |
test |
Used for automated testing |
staging |
Pre-production environment |
prod |
Live production environment |
2️⃣ Defining Profiles in application.properties
By default, Spring Boot loads application.properties, but we can create environment-specific files like:
application-dev.properties
application-test.properties
application-prod.properties
📌 Example: application-dev.properties (Development Settings)
server.port=8081
spring.datasource.url=jdbc:h2:mem:devdb
logging.level.root=DEBUG
📌 Example: application-prod.properties (Production Settings)
server.port=8080
spring.datasource.url=jdbc:mysql://prod-db-server:3306/proddb
logging.level.root=ERROR
🚀 Spring Boot will automatically pick the right file based on the active profile!
3️⃣ Using Profiles in application.yml
You can also define profiles using YAML format (application.yml).
📌 Example: application.yml with Multiple Profiles
server:
port: 8080
spring:
profiles:
active: dev # Default active profile
---
spring:
profiles: dev
datasource:
url: jdbc:h2:mem:devdb
logging:
level:
root: DEBUG
---
spring:
profiles: prod
datasource:
url: jdbc:mysql://prod-db-server:3306/proddb
logging:
level:
root: ERROR
✅ Here, Spring Boot will load the configuration based on the active profile.
4️⃣ Activating Profiles in Spring Boot
Spring Boot does not load profiles automatically. You need to activate a profile using one of the following methods:
Method 1: Using spring.profiles.active in application.properties
application.properties file: spring.profiles.active=dev
Method 2: Using Command-Line Arguments
bash java -jar myapp.jar --spring.profiles.active=prod Method 3: Using Environment Variables
Set the profile in the OS environment:
export SPRING_PROFILES_ACTIVE=prod
✅ This method is useful for cloud deployments (AWS, Azure, Kubernetes).
5️⃣ Using @Profile to Load Beans Conditionally
You can define environment-specific beans using the @Profile annotation.
📌 Example: Different DataSource Beans for Dev and Prod
@Configuration
public class DataSourceConfig {
@Bean
@Profile("dev")
public DataSource devDataSource() {
System.out.println("Using Dev DataSource");
return new HikariDataSource(); // H2 In-Memory DB
}
@Bean
@Profile("prod")
public DataSource prodDataSource() {
System.out.println("Using Prod DataSource");
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://prod-db-server:3306/proddb");
return dataSource;
}
}
✅ When the dev profile is active, it uses an H2 database. When prod is active, it connects to MySQL.
6️⃣ Testing Profile-Specific Beans
You can test which bean is being loaded by running:
mvn spring-boot:run -Dspring-boot.run.profiles=dev✅ Spring Boot logs will show:
Using Dev DataSource
7️⃣ Disabling a Profile-Specific Property
If you want to disable a property in a specific profile, you can use spring.config.activate.on-profile.
📌 Example: application.yml
spring:
config:
activate:
on-profile: prod
cache:
enabled: false
✅ This setting will only be applied in the prod profile.
🎯 Summary: What We Learned
✅ Spring Boot Profiles allow environment-based configuration.
✅ Use application-dev.properties, application-prod.properties for separate configurations.
✅ Profiles can be activated via application.properties, command-line, or environment variables.
✅ Use @Profile annotation to define beans specific to environments.
✅ Spring Boot automatically loads the right configuration based on the active profile.
📢 Share this guide to help others understand Spring Boot Profiles! 🚀
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment