آشنایی با شی Inner Beans و کاربرد آن
همانطور که میدانید ، کلاسهای درونی در جاوا ( Java inner classes ) کلاس هایی هستند که درون محدوده کد یک کلاس دیگر تعریف می شوند . به همین صورت inner beans نیز اشیای bean ی هستند که در درون محدوده کد یک bean دیگر تعریف می شوند . بنابراین یک
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | xml version= "1.0" encoding= "UTF-8" ?> xsi:schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd"> id= "outerBean" class = "..." > name= "target" > id= "innerBean" class = "..." /><button></button> |
بیاید با اجرای یک مثال عملی ، نحوه تعریف inner bean و استفاده از آن را در محیط Eclipse مشاهده کنیم . برای این منظور مراحل زیر را انجام دهید :
- یک پروژه جدید با نام SpringExample را ایجاد نموده و همچنین در زیر پوشه src پروژه ، پکیج tahlildadeh.com را اضافه کنید .
- همانطور که در درس آموزش ایجاد اولین برنامه Spring نشان دادیم ، به وسیله دکمه Add External JARs کتابخانه های مورد نیاز Spring را به پروژه خود اضافه کنید .
- در پکیج Com.tahlildadeh کلاس های جاوا Main App ، SpellChecker و TextEditor را اضافه نمایید .
- در پوشه Src پروژه ، فایل پیکربندی اطلاعات Beans.Xml را اضافه کنید .
- مرحله آخر تولید محتوای کلیه فایل های جاوا پروژه و تنظیم فایل پیکربندی اطلاعات به صورت زیر است .
محتویات فایل TextEditor.java بایستی به صورت زیر باشد :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public class TextEditor { private SpellChecker spellChecker; // a setter method to inject the dependency. public void setSpellChecker(SpellChecker spellChecker) { System.out.println( "Inside setSpellChecker." ); this .spellChecker = spellChecker; } // a getter method to return spellChecker public SpellChecker getSpellChecker() { return spellChecker; } public void spellCheck() { spellChecker.checkSpelling(); } } <button></button> |
کد زیر نیز مربوط به فایل کلاس وابسته ( dependent class ) با نام SpellChecker است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package com.tahlildadeh; public class SpellChecker { public SpellChecker(){ System.out.println( "Inside SpellChecker constructor." ); } public void checkSpelling(){ System.out.println( "Inside checkSpelling." ); } } <button></button> |
همچنین کد فایل اصلی برنامه یا MainApp.java به صورت زیر است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | package com.tahlildadeh; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "Beans.xml" ); TextEditor te = (TextEditor) context.getBean( "textEditor" ); te.spellCheck(); } } <button></button> |
در نهایت نیز کد زیر مربوط به فایل پیکربندی اطلاعات برنامه یا Beabs,Xml می باشد . در کد زیر از روش Setter-based برای DI استفاده شده و اشیاء به صورت innerbeans تعریف شده اند :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | xml version= "1.0" encoding= "UTF-8" ?> xsi:schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd"> id= "textEditor" class = "com.tahlildadeh.TextEditor" > name= "spellChecker" > id= "spellChecker" class = "com.tahlildadeh.SpellChecker" /><button></button> |
پس از ایجاد فایل های اصلی و پیکربندی اطلاعات برنامه ، آن را در محیط Eclipse اجرا می کنیم . اگر همه کدها درست باشند ، خروجی زیر بایستی حاصل شود :
1 2 3 4 5 6 7 | Inside SpellChecker constructor. Inside setSpellChecker. Inside checkSpelling. <button></button> |