admin
管理员
管理员
  • UID1
  • 粉丝1
  • 关注0
  • 发帖数378
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:1085回复:0

Spring注入内部bean

楼主#
更多 发布于:2015-12-17 11:25
正如你所知道的Java内部类是其他类的范围内定义的,同样,内部bean是被其他bean的范围内定义的bean。因此<property/>或<constructor-arg/>元素内<bean/>元件被称为内部bean和它如下所示。
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
 
&lt;beans 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"&gt;
 
   &lt;bean id="outerBean" class="..."&gt;
      &lt;property name="target"&gt;
         &lt;bean id="innerBean" class="..."/&gt;
      &lt;/property&gt;
   &lt;/bean&gt;
 
&lt;/beans&gt;



例如:

我们使用Eclipse IDE,然后按照下面的步骤来创建一个Spring应用程序:
[table=100%,#f7f7f7,#d6d6d6,1,rgb(214, 214, 214)][tr][td=1,1,26]步骤[/td][td]描述[/td][/tr][tr][td]1[/td][td]Create a project with a name SpringExample and create a package com.yiibai under the src folder in the created project.[/td][/tr][tr][td]2[/td][td]Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter.[/td][/tr][tr][td]3[/td][td]Create Java classes TextEditor, SpellChecker and MainApp under the com.yiibaipackage.[/td][/tr][tr][td]4[/td][td]Create Beans configuration file Beans.xml under the src folder.[/td][/tr][tr][td]5[/td][td]The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below.[/td][/tr][/table]这里是TextEditor.java文件的内容:
package com.yiibai;
 
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();
   }
}

下面是另外一个相关的类文件SpellChecker.java内容:
package com.yiibai;
 
public class SpellChecker {
   public SpellChecker(){
      System.out.println("Inside SpellChecker constructor." );
   }
 
   public void checkSpelling(){
      System.out.println("Inside checkSpelling." );
   }
    
}

以下是MainApp.java文件的内容:
package com.yiibai;
 
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();
   }
}

以下是配置文件beans.xml文件里面有配置为基于setter 注入,但使用内部bean:
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
 
&lt;beans 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"&gt;
 
   &lt;!-- Definition for textEditor bean using inner bean --&gt;
   &lt;bean id="textEditor" class="com.yiibai.TextEditor"&gt;
      &lt;property name="spellChecker"&gt;
         &lt;bean id="spellChecker" class="com.yiibai.SpellChecker"/&gt;
       &lt;/property&gt;
   &lt;/bean&gt;
 
&lt;/beans&gt;

创建源代码和bean配置文件来完成,让我们运行应用程序。如果一切顺利,这将打印以下信息:
Inside SpellChecker constructor.
Inside setSpellChecker.
Inside checkSpelling.

 

 

 

 

 

 

 

异常中心网是一家专门收集整理程序员编程过程中遇到的常见异常(exception)以及各种异常问答中心的网站。异常中心网旨在,减少程序员在编码遇到异常,处理各种异常时间和痛苦,让程序员能更愉快的、快速的定位异常并查找对应的异常解决方案。异常中心网诚心打造最完美的编程社区为程序员用户服务,努力成为最好的程序员乐园程序员社区程序异常中心程序bug中心异常问答中心

 

喜欢0 评分0
游客

返回顶部