Relaxed Binding
Relaxed binding Spring Boot ka MECHANISM hai jo DIFFERENT NAMING CONVENTIONS ke beech AUTOMATICALLY TRANSLATE karta hai — properties files/YAML mein KEBAB-CASE (my-property) CONVENTION hai, JAVA fields mein camelCase (myProperty), ENVIRONMENT VARIABLES mein UPPER_SNAKE_CASE (MY_PROPERTY) — SAB EK HI PROPERTY ko REFER karte hain.
YE FEATURE ESPECIALLY IMPORTANT hai CLOUD/CONTAINER environments mein — ENVIRONMENT VARIABLES (jo Kubernetes/Docker mein COMMON hain) SIRF UPPER_SNAKE_CASE SUPPORT karte hain (kabhi-kabhi), LEKIN Spring Boot code mein WE STILL camelCase FIELDS use kar sakte hain — RELAXED BINDING beech mein TRANSLATE kar deta hai.
// SAB TEENO, SAME Java field ko BIND karte hain:
// application.properties (kebab-case):
// app.jwt-secret=mySecretKey
// application.yml (camelCase bhi chalता hai):
// app:
// jwtSecret: mySecretKey
// Environment variable (UPPER_SNAKE_CASE):
// APP_JWT_SECRET=mySecretKey
// Java field (camelCase):
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String jwtSecret; // SAB THREE sources se BIND ho sakta hai
}- Kebab-case (properties/YAML) ↔ camelCase (Java) ↔ UPPER_SNAKE_CASE (env vars)
- Automatically TRANSLATE hota hai — MANUAL mapping ki zaroorat NAHI
- Cloud/container environments mein ESPECIALLY useful
Relaxed binding CASE-INSENSITIVE hai — app.myProperty, app.my-property, APP_MY_PROPERTY (environment variable style) — SAB EK HI Java field (myProperty) ko BIND ho sakte hain. Ye FLEXIBILITY especially useful hai jab CONFIGURATION MULTIPLE sources (properties file, env vars, command-line) se AA rahi ho.
Relaxed binding LISTS aur MAPS ko bhi SUPPORT karta hai — app.servers[0]=host1, app.servers[1]=host2 (indexed) ya YAML mein NATURAL list syntax, DONO EK List<String> field mein BIND ho sakte hain.
# Properties file mein indexed list:
app.servers[0]=server1.example.com
app.servers[1]=server2.example.com
# @ConfigurationProperties class mein:
# private List<String> servers;