جلسه شماره 129رایگان

Properties Files in Spring | آموزش فایل‌های Properties در اسپرینگ

00:19:19

توضیحات جلسه

🎥 این ویدیو قسمت صد و چهاردهم از بوت‌کمپ رایگان جاوا و سیزدهمین جلسه از پلی‌لیست تخصصی آموزش فریم‌ورک اسپرینگ است. 📚 در این جلسه به سراغ یکی از مفاهیم زیرساختی در اسپرینگ می‌رویم: مدیریت تنظیمات و پیکربندی اپلیکیشن (Configuration) با استفاده از فایل‌های Properties. خیلی اوقات در حین توسعه نرم‌افزار، نیاز داریم تنظیماتی مثل آدرس دیتابیس، پورت سرور و سایر پارامترها را خارج از کد اصلی برنامه مدیریت کنیم. در این ویدیو ابتدا بررسی می‌کنیم که چرا Hardcode کردن مقادیر در کد یک اشتباه بزرگ است و چه مشکلاتی در چرخه حیات برنامه ایجاد می‌کند. سپس به بررسی فایل‌های محبوب .properties و .yml می‌پردازیم و تفاوت‌های ساختاری و کاربردی آن‌ها را با هم مقایسه می‌کنیم تا بهترین انتخاب را برای پروژه‌های خود داشته باشید. در این جلسه یاد می‌گیریم: ⚙️ چرا به فایل‌های تنظیمات در اسپرینگ نیاز داریم و مشکلات روش‌های سنتی چیست 🆔 درک مفهوم Identity و چرخه حیات تنظیمات در اسپرینگ 🛠️ آموزش کامل نحوه استفاده از فایل‌های .properties و سینتکس آن‌ها 📦 آموزش کار با فایل‌های .yml و مزایای ساختار سلسله‌مراتبی آن‌ها ⚖️ مقایسه جامع بین properties و yml و اینکه در چه پروژه‌هایی از کدام استفاده کنیم 🧠 در پایان نیز یک جمع‌بندی کامل از نکات مهم جلسه خواهیم داشت اگر در حال یادگیری Spring Boot یا اسپرینگ هستید، یادگیری مدیریت اصولی تنظیمات یکی از مهم‌ترین مهارت‌ها برای توسعه اپلیکیشن‌های مقیاس‌پذیر و تمیز است. 📌 یوتیوب: https://youtube.com/@farzadafi 📌 آپارت: https://aparat.com/farzadafi 📌 وب‌سایت: https://farzadafi.ir 📌 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi 🌐 وب‌سایت: https://farzadafi.ir هر سوالی داشته باشید می‌توانید در گروه بپرسید تا من یا مربی‌های گروه کمکتان کنیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش کاملاً پروژه‌محور برای یادگیری عمیق جاوا و ورود به بازار کار.

جزوه و مستندات

مفاهیم کلیدی

  • Spring Framework Legacy Configuration

روش سنتی پیکربندی در اسپرینگ که نیازمند تعریف دستی Beanها از طریق فایل‌های XML یا تنظیم صریح PropertySourcesPlaceholderConfigurer برای خواندن فایل‌های تنظیمات بود.

  • Auto-configuration

قابلیت پیکربندی خودکار در Spring Boot با رویکرد Opinionated Defaults که به صورت پیش‌فرض و خودکار مسیر src/main/resources را هنگام اجرای برنامه اسکن و لود می‌کند.

  • Pre-Bean Initialization Lifecycle

مرحله‌ای از چرخه حیات Spring Boot که در آن فایل‌های تنظیمات، پیش از ساخت و مقداردهی هرگونه Bean در ApplicationContext لود و پردازش می‌شوند.

  • Spring Environment Object

آبجکتی در هسته فریم‌ورک که مقادیر کانفیگ را پس از پارس‌شدن در خود نگه می‌دارد و رفتارهایی مانند پورت سرور، شرایط ساخت Beanها و سطح لاگ‌ها را تعیین می‌کند.

  • Classpath Packaging

فرایند بیلد توسط Maven یا Gradle که دایرکتوری src/main/resources را مستقیماً در ریشه Classpath و داخل مسیر BOOT-INF/classes فایل اجرایی JAR قرار می‌دهد.

  • Flat Key-Value Syntax

سینتکس خطی و تخت مورد استفاده در فایل application.properties که برای تفکیک سطوح و ساختار سلسله‌مراتبی از علامت نقطه یا همان Dot Notation استفاده می‌کند.

  • Hierarchical YAML Structure

ساختار درختی و خوانا در application.yml که پیشوندهای تکراری در نام‌گذاری کانفیگ‌ها را حذف کرده و روابط والد و فرزندی را با فاصله‌گذاری مشخص می‌کند.

موارد مصاحبه ای

  • What is the loading priority between application.properties and application.yml?

فایل application.properties اولویت بالاتری نسبت به application.yml دارد؛ در صورت وجود کلید یکسان در هر دو فایل، مقدار موجود در فایل properties مقدار معادل در yml را رونویسی یا Override می‌کند.

  • Why should application.properties and application.yml not be used together?

استفاده همزمان از هر دو فایل به دلیل تداخل اولویت‌ها، پیچیدگی در عیب‌یابی و نقض یکپارچگی پیکربندی، توسط مستندات رسمی Spring Boot منع شده است.

  • When are configuration files loaded during Spring Boot startup lifecycle?

این فایل‌ها در فاز Pre-Bean Initialization بارگذاری می‌شوند تا مقادیر پایه محیطی پیش از ساخت و تزریق وابستگی‌های Beanها در Environment ثبت شده باشند.

  • What causes ScannerException or ParserException when using YAML in Spring Boot?

استفاده از کاراکتر Tab به جای کلید Space برای تورفتگی یا Indentation، ساختار درختی YAML را نامعتبر کرده و خطای پارس در لود برنامه ایجاد می‌کند.

سناریو کاربردی

در یک سناریوی راه‌اندازی سرویس، تنظیمات پایه‌ای برنامه به دو شیوه قابل پیاده‌سازی است:

در فرمت خطی application.properties:

server.port=8085 spring.application.name=taco-cloud spring.main.banner-mode=off

در فرمت ساختاریافته application.yml:

server:
  port: 8085

spring:
  application:
    name: taco-cloud
  main:
    banner-mode: off

با اعمال این مقادیر، وب‌سرور داخلی Tomcat به جای پورت پیش‌فرض ۸۰۸۰ روی پورت ۸۰۸۵ اجرا می‌شود، نام اپلیکیشن در لاگ‌های ابتدایی درج می‌گردد و بنر اسکی ابتدای اجرای Spring Boot غیرفعال خواهد شد.

بیشتر بدانید

  • Indentation Rule

در فایل‌های YAML صرفاً باید از کلید Space استفاده شود و استفاده از Tab منجر به توقف فرآیند بوت برنامه خواهد شد.

  • Official Reference

لیست جامع و استاندارد تمام مشخصه‌های قابل تنظیم در Spring Boot در ضمیمه مستندات رسمی تحت عنوان Common Application Properties در دسترس است.

  • Modern Architecture Practice

به دلیل ساختار تمیز، حذف پیشوندهای تکراری و خوانایی بسیار بالاتر در پروژه‌های بزرگ و توزیع‌شده، استفاده از YAML نسبت به properties استاندارد رایج‌تری در سطح سازمان‌ها محسوب می‌شود.