Spring Boot — Configuration and Profiles
Welcome to Spring Boot — Configuration and Profiles in our Spring Boot Complete Masterclass! Externalize configuration using properties/YAML, bind typed properties with @ConfigurationProperties, and manage profiles.
In modern enterprise backend software architecture, Configuration and Profiles plays a fundamental role in structuring Java Spring Boot applications, auto-configuration pipelines, RESTful APIs, and cloud-native microservices.
- Master Spring Boot annotations and configuration syntax for Configuration and Profiles
- Understand Spring IoC container bean lifecycles and DispatcherServlet request routing
- Implement production-grade Spring Data JPA repositories, Spring Security JWT, and REST controllers
- Avoid tight coupling, circular dependencies, N+1 query select problems, and improper bean scoping
Mastering Configuration and Profiles enables you to build production-ready enterprise microservices, automate boilerplate setup with convention-over-configuration, and scale Java REST APIs effortlessly.
Target Command / Annotation: spring.profiles.active=dev. Executed inside Maven/Gradle Java projects running Spring Boot 3.2+ on Java 17/21 LTS.
Mechanism: Spring IoC Container & Auto-Configuration. Core Topic: application.properties vs application.yml.
package com.ourcompiler.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;
// Example demonstration for Configuration and Profiles
spring.profiles.active=dev
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
. ____ _ __ _ _
/\\\\ / ___'_ __ _ _(_)_ __ __ _ \\ \\ \\ \\
( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\\__, | / / / /
=========|_|==============|___/=/_/ /_/
:: Spring Boot :: (v3.2.3)
2026-08-21T14:30:00.123Z INFO 12345 --- [main] c.o.app.Application : Starting Application using Java 21...
2026-08-21T14:30:01.890Z INFO 12345 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2026-08-21T14:30:02.100Z INFO 12345 --- [main] c.o.app.Application : Started Application in 2.345 seconds (process running for 2.8)
// Production Service implementation for Configuration and Profiles
package com.ourcompiler.app.service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Service
@Transactional(readOnly = true)
public class CourseService {
private static final Logger log = LoggerFactory.getLogger(CourseService.class);
public String getCourseDetails(Long id) {
log.info("Fetching course details for ID: {}", id);
return "Spring Boot Masterclass — Chapter 9: Configuration and Profiles";
}
}
Spring Boot's auto-configuration conditionally configures beans based on classpath starters, reducing XML/Java configuration boilerplate by over 90%.
- Using
@Autowiredfield injection instead of constructor injection — breaks immutability and makes unit testing with Mockito difficult. - Forgetting to handle circular dependencies between Spring beans — causes application startup failure (BeanCurrentlyInCreationException).
- Exposing JPA entities directly through REST controllers instead of converting to DTOs — causes accidental mass-assignment security leaks.
- Executing blocking database/network calls inside reactive WebFlux streams.
- Leaving
spring.jpa.hibernate.ddl-auto=create-dropenabled in production environments — results in data loss on restart! Use Flyway or Liquibase instead.
Create a Spring Boot application using Maven wrapper. Implement spring.profiles.active=dev inside your package, run ./mvnw spring-boot:run, and test the HTTP endpoint at http://localhost:8080/api using cURL or Postman!
❓ Question: What is the primary advantage of Configuration and Profiles in Spring Boot?
Answer: It provides convention-over-configuration and auto-configuration for application.properties vs application.yml, eliminating manual bean setup.
- Externalize configuration using properties/YAML, bind typed properties with @ConfigurationProperties, and manage profiles.
- Spring Boot simplifies Java enterprise backend development with auto-configuration and embedded servers.
- Combine Dependency Injection, Spring Data JPA, and Spring Security for scalable REST API microservices.