خانه / اسپرینگ / Bean و xml

Bean و xml

در آموزش های قبلی با مفهوم Spring ، راه اندازی محیط آن و Spring IoC Container آشنا شدیم و یک مثال عملی بسیار ساده نیز مشاهده کردیم ، در این آموزش با Bean بیشتر آشنا می شویم و یاد می گیریم که چگونه برای آن Configuration Metadata آماده کنیم.

Bean مهم ترین و زیر بنایی ترین مفهوم در Spring است ، مدیریت Bean به عهده Container است و برای ساخت و پیکره بندی Bean باید همانطور که در آموزش قبلی گفتم به طریقی Configuration Metadata را به Container بدهیم.

Configuration Metadata را در Spring به سه شیوه زیر می توان آماده کرد :

  1. با استفاده از فایل xml
  2. با استفاده از annotation
  3. با استفاده از کد های جاوا

در این آموزش با روش اول آشنا می شویم و روش های دیگر را در آموزش ها بعدی فرا می گیریم.

 

Configuration Metadata سه مورد کلی را در مورد Bean ها مشخص می کند :

  1. چگونه Bean ایجاد شود
  2. طول عمر (lifecycle) یک Bean به چه شکل باشد
  3. وابستگی های (dependencies) یک Bean چیست

سه مورد فوق توسط ویژگی های زیر پوشش داده می شوند (فعلاً نگران این نباشید که چگونه باید از ویژگی های زیر  استفاده کنیم).

class : هنگامی که یک Bean تعریف می کنیم با استفاده از این صفت bean را به کلاس جاوایی متناظر آن ربط می دهیم.(کلاسی را مشخص می کند که Bean از روی آن ساخته می شود).

name : نام Bean را مشخص می کند که باید منحصر به فرد باشد در یک Configuration Metadata به شکل xml می توانید از صفت name یا id برای انجام این کار استفاده کنید.

scope : حوزه عملیاتی Bean را مشخص می کند و بعداً در آموزشی جدا گانه در مورد آن صحبت خواهم کرد.

constructor-args : از این ویژگی برای dependency injection استفاده می شود و نیازمند توضیح در مطلبی جداگانه است.

properties : این مورد نیز برای dependency injection به کار می رود.

autowiring : این مورد نیز برای dependency injection به کار می رود ، قبلاً نیز یک مورد از آن دیده ایم.

lazy-initialization : به IoC Container می فهماند که تنها در زمان اولین دسترسی به Bean آن را ایجاد کند ( و نه زود تر).

initialization و destruction : این دو مورد را بعداً بررسی می کنیم.

 

ممکن است تا حدودی گیج شده باشید که موارد فوق کجا و چگونه مشخص می شوند؟ نگران نباشید ، هنگامی که نحوه تعریف Configuration Metadata را یاد بگیرید استفاده از ویژگی های فوق نیز بسیار آسان خواهد بود ، به عنوان اگر بخواهیم Configuration Metadata را به شکل xml تعریف می کنیم از موارد فوق می توان به شکل زیر استفاده کرد :

اجازه دهید تا با یک مثال عملی به سادگی با توضیحات این مطلب آشنا شویم .

ابتدا یک پروژه ساده مبتنی بر Spring ایجاد می کنیم (به آموزش های قبلی مراجعه کنید).

یک کلاس جدید به نام Person ایجاد می کنیم و کد زیر را در آن می نویسیم :

این کلاس بسیار ساده مشخص کننده مفهوم “فرد” است که دارای دو ویژگی نام و نام خانوادگی است.

حال به قسمت مهم این آموزش می رسیم ، می خواهیم Configuration Metadata را به شکل xml بسازیم ، در زیر پوشه src یک فایل جدید به نام MyBeans.xml ایجاد می کنیم و کد زیر را در داخل آن می نویسیم :

همانطور که مشاهده می کنید هنگام تعریف Configuration Metadata به شکل xml یک فایل به شکل فوق تعریف می کنیم نحوه تعریف این فایل و سایر فایل های xml را می توانید از لینک زیر مطالعه کنید.

http://docs.spring.io/spring/docs/current/spring-framework-reference/htm…

قسمت های مهم این فایل به شرح زیر هستند :

تگ beans که همیشه به شکل فوق بوده و مشخص می کند که قرار است bean هایی در درون آن داشته باشیم .

تگ bean که مهم ترین تگ بوده و با استفاده از آن Bean  های خودمان را تعریف می کنیم ، همانطور که بالاتر گفتم هر Bean باید یک name یا id منحصر به فرد داشته باشد (که نام آن را مشخص می کند) در اینجا با استفاده از صفت id نام Bean خودمان را hassanBean گذاشته ایم (که مسلماً یک نام دلخواه است :دی).

با استفاده از صفت class باید مشخص کنیم که Bean مورد نظر از روی چه کلاسی ساخته می شود و بسیار واضح است که در این مثال صفت class باید برابر ir.springmvc.beanxml.Person باشد.

در داخل تگ bean با استفاده از تگ های property فیلد های Bean ساخته شده از روی کلاس مورد نظر را مقدار دهی کنیم (در Spring به این فیلد های Bean همان property می گوییم :دی)

در اینجا property های name و lastName را با مقادیر hassan و zaaferani مقدار دهی می کنیم.

 

حال اسکلت اصلی برنامه را می نویسیم ، یک کلاس جدید به نام Main ایجاد می کنیم و کد زیر را در آن می نویسیم :

همانطور که مشاهده می کنید این بار از ClassPathXmlApplicationContext برای ساخت ApplicationContext استفاده کردیم که نام یک فایل xml را به عنوان Configuration Metadata از ما می گیرد.

با استفاده از context.getBean یک Bean به نام hasssanBean را از Container می گیریم (تنظیمات این Bean در فایل xml بالا ثبت شده است).

نتیجه فراخوانی safe.getName و safe.getLastName را خودتان پیشاپیش باید حدس بزنید ، اگر برنامه فوق را اجرا کنیم ، خروجی زیر را خواهیم داشت :

 

—————

منبع: برگرفته از مقاله ای در safecomp.ir

درباره ی حسن زعفرانی

حسن زعفرانی هستم! مهندس کامپیوتر و برنامه نویس!! توی هرچی دلتون بخواد کد زدم!! پایتون یه چیز دیگه بود ولی جاوا ..... ما رو دنبال کنید

همچنین ببینید

مقدمه ای بر اسپرینگ

مقدمه ای بر اسپرینگ چارچوب[۱] اسپرینگ یک چارچوب نرم افزاری و یک ظرف[۲] کنترل وارونگی[۳] …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *