Scope در Spring – Spring MVC

قبلاً به صورت مختصر با صفات و ویژگی های bean آشنا شدیم ، scope مشخصه ای است که مشخص می کند یک bean به چه شکل تولید شود و تا چه زمانی دارای اعتبار باشد ، Spring پنج نوع مختلف scope را تعریف می کند که سه مورد از آن ها مربوط به برنامه های تحت وب است.

این پنج scope عبارتند از :

singleton : این حالت از الگوی طراحی singleton استفاده می کند ، در نتیجه تنها یک شی از کلاس مورد نظر در دسترس خواهد بود.

prototype : این حالت نقطه مقابل حالت قبلی است و بیان می کند که هر تعداد دلخواه شی از روی یک bean می توانیم بسازیم.

request : این مورد در محیط های تحت وب کاربرد دارد و بعداً در مورد آن صحبت خواهم کرد.

session : این مورد در محیط های تحت وب کاربرد دارد و بعداً در مورد آن صحبت خواهم کرد.

globalSession: این مورد در محیط های تحت وب کاربرد دارد و بعداً در مورد آن صحبت خواهم کرد.

 

در این آموزش فقط با دو مورد اول آشنا می شویم .

ابتدا یک پروژه جدید مبتنی بر Spring ایجاد می کنیم ،

کلاس PrototypeBean را به صورت زیر ایجاد می کنیم :

کلاس SingletonBean را نیز به صورت زیر ایجاد می کنیم :

همانطور که مشاهده می کنید این دو کلاس هیچ تفاوتی با هم ندارند ولی در ادامه کاری می کنیم که bean هایی که از روی این کلاس های ساخته می شوند دارای scope های متفاوتی باشند.

فایل myConfig.xml را به صورت زیر ایجاد می کنیم :

در تنظیمات فوق مشخص کردیم که bean هایی که از روی کلاس PrototypeBean ساخته می شوند داری scope معادل با prototype باشند و bean هایی که از روی کلاس SingletonBean ساخته می شوند دارای scope معادل با singleton باشند.

فایل Main.java را به صورت زیر ایجاد می کنیم :

برنامه را اجرا می کنیم ، خروجی به صورت زیر خواهد بود :

ابتدا pBean1 ساخته می شود و سپس با استفاده از متد setMessage پیغام آن معادل با Hello قرار می گیرد و سپس با getMessage پیغام آن را چاپ می کنیم. تا اینجا نکته خاصی وجود ندارد ، پیغام pBean1 به درستی چاپ می شود.

سپس pBean2 ساخته می شود ، پیغامی برای آن تعیین نمی کنیم و وقتی از getMessage استفاده می کنیم null چاپ می شود ، در حقیقت pBean1 و pBean2 دو bean متفاوت و مجزا هستند زیرا scope آن ها prototype است و این scope به ما اجازه می دهد چندین bean متفاوت داشته باشیم.

سپس sBean1 ساخته می شود و سپس با استفاده از متد setMessage پیغام آن معادل با Good Bye قرار می گیرد و سپس با getMessage پیغام آن را چاپ می کنیم.

سپس sBean2 ساخته می شود ولی از setMessage استفاده نمی کنیم ولی می بینیم که باز هم پیغام Good Bye چاپ می شود چون sBean1 و sBean2 تنها به یک شی (یک bean) اشاره می کنند.

دیدگاهتان را بنویسید

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