آشنایی با شی Inner Beans و کاربرد آن
همانطور که میدانید ، کلاسهای درونی در جاوا ( Java inner classes ) کلاس هایی هستند که درون محدوده کد یک کلاس دیگر تعریف می شوند . به همین صورت inner beans نیز اشیای bean ی هستند که در درون محدوده کد یک bean دیگر تعریف می شوند . بنابراین یک بیاید با اجرای یک مثال عملی ، نحوه تعریف inner bean و استفاده از آن را در محیط Eclipse مشاهده کنیم . برای این منظور مراحل زیر را انجام دهید : محتویات فایل TextEditor.java بایستی به صورت زیر باشد : کد زیر نیز مربوط به فایل کلاس وابسته ( dependent class ) با نام SpellChecker است : همچنین کد فایل اصلی برنامه یا MainApp.java به صورت زیر است : در نهایت نیز کد زیر مربوط به فایل پیکربندی اطلاعات برنامه یا Beabs,Xml می باشد . در کد زیر از روش Setter-based برای DI استفاده شده و اشیاء به صورت innerbeans تعریف شده اند : پس از ایجاد فایل های اصلی و پیکربندی اطلاعات برنامه ، آن را در محیط Eclipse اجرا می کنیم . اگر همه کدها درست باشند ، خروجی زیر بایستی حاصل شود :
xml version="1.0" encoding="UTF-8"?>
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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="..."/>
مثال عملی کار با inner bean :
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();
}
}
package com.tahlildadeh;
public class SpellChecker {
public SpellChecker(){
System.out.println("Inside SpellChecker constructor." );
}
public void checkSpelling(){
System.out.println("Inside checkSpelling." );
}
}
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();
}
}
xml version="1.0" encoding="UTF-8"?>
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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"/>
Inside SpellChecker constructor.
Inside setSpellChecker.
Inside checkSpelling.