专栏首页IT技能应用Spring - 注入内部 Bean
原创

Spring - 注入内部 Bean

如您所知,Java 内部类是在其他类的范围内定义的,类似地,内部 bean是在另一个 bean 的范围内定义的 bean。因此,<property/> 或 <constructor-arg/> 元素内的 <bean/> 元素称为内部 bean,如下所示。

<?xml version = "1.0" encoding = "UTF-8"?>

<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">

   <bean id = "outerBean" class = "...">
      <property name = "target">
         <bean id = "innerBean" class = "..."/>
      </property>
   </bean>

</beans>

例子

让我们使用 Eclipse IDE 并按照以下步骤创建一个 Spring 应用程序 -

脚步

描述

1

创建一个名为SpringExample的项目,并在创建的项目的src文件夹下创建一个包com.tutorialspoint。

2

使用添加外部 JAR选项添加所需的 Spring 库,如Spring Hello World 示例章节中所述。

3

创建Java类文本编辑,拼写检查和MainApp下com.tutorialspoint包。

4

在src文件夹下创建 Beans 配置文件Beans.xml。

5

最后一步是创建所有 Java 文件和 Bean 配置文件的内容并运行应用程序,如下所述。

这是TextEditor.java文件的内容-

package com.tutorialspoint;

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.tutorialspoint;

public class SpellChecker {
   public SpellChecker(){
      System.out.println("Inside SpellChecker constructor." );
   }
   public void checkSpelling(){
      System.out.println("Inside checkSpelling." );
   }
}

以下是MainApp.java文件的内容-

package com.tutorialspoint;

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 -

<?xml version = "1.0" encoding = "UTF-8"?>

<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">

   <!-- Definition for textEditor bean using inner bean -->
   <bean id = "textEditor" class = "com.tutorialspoint.TextEditor">
      <property name = "spellChecker">
         <bean id = "spellChecker" class = "com.tutorialspoint.SpellChecker"/>
      </property>
   </bean>

</beans>

完成源文件和 bean 配置文件的创建后,让我们运行应用程序。如果您的应用程序一切正常,它将打印以下消息 -

Inside SpellChecker constructor.
Inside setSpellChecker.
Inside checkSpelling.

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Bean 依赖注入

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • 【Spring实战】—— 6 内部Bean

    本篇文章讲解了Spring的通过内部Bean设置Bean的属性。   类似内部类,内部Bean与普通的Bean关联不同的是:   1 普通的Bean,在其...

    用户1154259
  • Spring的bean的属性注入

    bean的属性注入3中方式。 1.0 接口注入。 2.0 构造函数注入。 3.0 setter方法的注入。

    热心的社会主义接班人
  • Spring中bean的注入方式

     首先,要学习Spring中的Bean的注入方式,就要先了解什么是依赖注入。依赖注入是指:让调用类对某一接口的实现类的实现类的依赖关系由第三方注入,以此来消除...

    Kevin_Zhang
  • Spring 注入 Bean 到 List / Map 中

    Spring在注入集合类的同时,会将集合泛型类的实例填入集合中,作为集合的初始值。 对于list、set填入的是注入类型Spring管理的实例,对于map,S...

    一个会写诗的程序员
  • spring开发_spring构造注入Bean

    http://www.cnblogs.com/hongten/gallery/image/112399.html

    Hongten
  • Spring 注入 Bean 的七种方式

    我们谈到Spring的时候一定会提到IOC容器、DI依赖注入,Spring通过将一个个类标注为Bean的方法注入到IOC容器中,达到了控制反转的效果。那么我们刚...

    逆锋起笔
  • 在监听器中注入spring bean

    明明如月学长
  • static静态方法内调用Spring(依赖注入)的bean

    前言:一般需要在static方法里调用注入进来的service,因为是静态方法,所以必须声明该service也必须是static的,这时候你会发现注入不进来,会...

    王念博客
  • Spring @Lookup实现单例bean依赖注入原型bean

    地址:https://www.jianshu.com/p/5254e1947d77

    林老师带你学编程
  • Spring 多线程下注入bean问题

    java404
  • Spring核心——Bean的依赖注入 原

    在设计模式与IoC这篇文章中,介绍了Spring基础的三大支柱的两项内容——IoC、Bean。本篇将继续围绕着Bean的创建时的注入方式来介绍Spring的核心...

    随风溜达的向日葵
  • Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    程序新视界
  • Spring-Bean实例是如何依赖注入?

    getBean()方法有很多重载方法,上面只总结了一个。这个方法是DI的入口方法,接下来会从这个方法开始往下研究。

    用户5224393
  • spring的bean的注解

    bean可以xml配置,也可以采用注解,注解更加简单,注解也需要配置相关的xml文件。因为bean的装配,采用注解和使用配置不同,所以注解的schema和命名空...

    热心的社会主义接班人
  • spring BeanDefinition Bean的注册

    官方解释: BeanDefinition是Bean的定义,描述了一个Bean实例。它包含了描述一个Bean所需的最少接口方法。一个BeanDefinition...

    平凡的学生族
  • Spring 框架学习(二)Spring Bean 的装配与注入

    最初的引入案例便是在xml中的显式配置。从引入的步骤我们可以了解到,在使用 xml 显式的装配一个 Bean 时,需要以下几个步骤。

    求和小熊猫
  • Spring源码解析(五)Spring 加载bean 依赖注入

    至此,我们分析过后,可以简单的归纳一下Spring IOC容器的过程 一、Resource定位过程 这个Resource定位指的的是BeanDefinitio...

    石臻臻的杂货铺[同名公众号]
  • Spring实战2:装配bean—依赖注入的本质主要内容

    任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须相互了解、能够相互协作完成工作。例如,在一个在线购物系统中,订单管理组件需要...

    阿杜

扫码关注云+社区

领取腾讯云代金券