📝
Basics

application.properties Deep Dive

Key-Value Configuration
💡 application.properties ek CONTROL PANEL hai — HAR SWITCH (property) ek SPECIFIC BEHAVIOR CONTROL karta hai (port number, database URL, logging level) — CODE CHANGE kiye BINA, BEHAVIOR badalne ka tareeka.

application.properties (src/main/resources mein) Spring Boot ki PRIMARY configuration file hai — KEY=VALUE format mein, poori application ka BEHAVIOR CONTROL kiya jaata hai — server port, database credentials, logging levels, aur CUSTOM application-specific properties.

Ye properties Spring Boot ke AUTO-CONFIGURATION se DIRECTLY JUDI hoti hain — jaise spring.datasource.url set karна, DataSource bean ki configuration BADAL deta hai, bina EK LINE Java code likhe. @Value annotation ya @ConfigurationProperties se, YE values Java code mein bhi READ ki ja sakti hain.

# Server config:
server.port=8081
server.servlet.context-path=/api

# Database:
spring.datasource.url=jdbc:postgresql://localhost:5432/bookstore
spring.datasource.username=admin
spring.datasource.password=secret

# Logging:
logging.level.org.springframework=INFO
logging.level.com.example=DEBUG

# Custom application properties:
app.jwt.expiration=86400000
app.upload.max-size=10MB
📝
application.properties ek CONTROL PANEL hai — HAR SWITCH (property) ek SPECIFIC BEHAVIOR CONTROL karta hai (port number, database URL, logging level) — CODE CHANGE kiye BINA, BEHAVIOR badalne ka tareeka.
1 / 2
⚡ Quick Recap
  • KEY=VALUE format — HAR property, HAR aspect ka behavior control karti hai
  • spring.* prefixed properties = Spring Boot ke internal auto-configuration
  • Custom properties (app.*) = tumhare khud ke application-specific settings
On this page (2 subtopics)

Spring Boot MULTIPLE SOURCES se properties LOAD kar sakta hai — command-line arguments, environment variables, application-{profile}.properties, application.properties — HAR EK ki EK SPECIFIC PRIORITY hai. Command-line arguments SABSE HIGH priority rakhte hain (OVERRIDE kar dete hain baaki SAB ko).

  • 1. Command-line arguments (HIGHEST priority)
  • 2. Environment variables
  • 3. application-{profile}.properties
  • 4. application.properties (LOWEST, default fallback)

@Value("${property.name}") annotation se, EK SPECIFIC property DIRECTLY ek field mein INJECT ki ja sakti hai. Default value bhi diya ja sakta hai colon (:) syntax se — agar property NOT SET hai, default value use hoti hai.

@Component
public class AppConfig {
    @Value("${app.jwt.expiration:3600000}")   // default: 1 hour agar property missing ho
    private long jwtExpiration;
}