يُخرج Spring Boot الإعداد إلى الخارج لكي يعمل الـ jar نفسه في كل بيئة. تضع الإعدادات في application.yml (أو .properties)، وتقرأها إلى كودك، وتبدّل السلوك حسب البيئة عبر profiles.
application.yml و@Value
يُخرج Spring Boot الإعداد إلى الخارج لكي يعمل الـ jar نفسه في كل بيئة. تضع الإعدادات في application.yml (أو .properties)، وتقرأها إلى كودك، وتبدّل السلوك حسب البيئة عبر profiles.
@Component
public class SearchService {
// احقن خاصية مفردة؛ القيمة :20 هي البديل إن غابت.
@Value("${app.page-size:20}")
private int pageSize;
}
لأي شيء يتجاوز قيمة أو قيمتين، اربط كائنًا مُنمّطًا بدل نثر @Value:
@Component
@ConfigurationProperties(prefix = "app") // يربط app.* بهذه الحقول
public class AppProps {
private int pageSize;
private Map<String, Boolean> featureFlags;
// getters/setters — يربط Boot page-size بمرونة -> pageSize
}
هذا يمنحك أمان الأنواع، والإكمال التلقائي في الـ IDE، والتحقق (أضف @Validated + قيودًا).
spring:
config:
activate:
on-profile: prod # فقط حين يكون 'prod' مفعّلًا
server:
port: 80
ملفات مثل application-dev.yml وapplication-prod.yml تُطبَّق فوق الأساس. فعّل واحدًا بـ --spring.profiles.active=prod أو بمتغيّر البيئة SPRING_PROFILES_ACTIVE. ترتيب الأسبقية مهم: وسائط سطر الأوامر ومتغيّرات البيئة تتجاوز الملفات، فتبقى الأسرار خارج الـ jar.
يتحقق المُحاور من أنك تستطيع شحن مُنتَج واحد عبر dev/staging/prod دون إعادة بناء. ذكر @ConfigurationProperties بدل @Value المنثور، وتجاوز متغيّرات البيئة للملفات للأسرار، يُظهر أنك شغّلت تطبيقات Boot في الإنتاج لا محليًا فقط.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع