Spring中如何在一个Bean中注入一个内部Bean呢?

2023-11-09

转自:

Spring中如何在一个Bean中注入一个内部Bean呢?

在日常开发中,有些实体类的定义,一个类中包含了另一个类,那么在Spring Bean中,同样也有此种操作,下文将讲述使用xml配置文件的方式注入内部bean的方法

实现思路:
     使用bean中的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 class="..." id="outerBean">
        <property name="target">
            <!-- 定义内部Bean -->
            <bean class="...">
        </bean></property>
    </bean>
</beans>

例: 下文将基于Eclispe建立一个Spring项目

  1. 创建 SpringDemo 项目
  2. 在 src 目录下创建 com.java265 包
  3. 添加相应的 jar 包,可参阅我的第一个Spring程序
  4. 在 com.java265 包下创建 Person、Man 和 MainApp 类
  5. 在 src 目录下创建 Spring 配置文件 Beans.xml
  6. 运行 SpringDemo 项目

Person 类

package com.java265;
public class Person {
    private Man man;
    public Man getMan() {
        return man;
    }
    public void setMan(Man man) {
        System.out.println("在setMan方法内");
        this.man = man;
    }
    public void man() {
        man.show();
    }
}

Man 类

package com.java265;
public class Man {
    private String name;
    private int age;
    public Man() {
        System.out.println("在man的构造函数内");
    }
    public Man(String name, int age) {
        System.out.println("在man的有参构造函数内");
        this.name = name;
        this.age = age;
    }
    public void show() {
        System.out.println("名称:" + name + "\n年龄:" + age);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

Beans.xml 配置文件

<?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="person" class="com.java265.Person">
        <property name="man">
            <bean class="com.java265.Man">
                <property name="name" value="java265.com" />
                <property name="age" value="888" />
            </bean>
        </property>
    </bean>
</beans>

MainApp 类

package com.java265;
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");
        Person person = (Person) context.getBean("person");
        person.man();
    }
}

运行结果----
在man的有参构造函数内
在Person的构造函数内
名称:java265.com
年龄:888

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring中如何在一个Bean中注入一个内部Bean呢? 的相关文章

随机推荐

  • 详解map、set、multimap、multiset的使用

    作者 阿润菜菜 专栏 C 目录 前言 set multiset的使用 1 set 2 multiset 3 什么时候应该使用multiset而不是set map multimap的使用 1 map 2 multimap 3 什么时候应该使用
  • 手把手教你创建的私人git仓库(Linux CentOS7 )

    手把手教你创建的私人git仓库 Linux CentOS7 安装git yes yum install git core 配置用户名和邮箱 此处以 lrq lrq email com 为例 git config global user na
  • js 实现rgb和十六进制的代码转化

    十六进制转化为RGB function set16ToRgb str 十六进制颜色代码的正则表达式 var reg 0 9A Fa f 3 0 9A Fa f 6 test 检测str是否匹配十六进制颜色的模式 if reg test st
  • python爬取英雄联盟所有皮肤

    import jsonpath import requests import json import os import time 程序开始时间 start time time from tqdm import tqdm from time
  • chrome应用商店打不开,怎么下载vue-devtools并安装呢?

    相信很多朋友曾经像我一样 安装vue devtools时总会从各种渠道最后综合转到chrome应用商店的网址 而国内chrome网页是打不开的 肿么办 一 下载 1 本地建立文件夹 自由命名 比如我的为了区分自己的和网上下载的 起名为vue
  • TypeScript 基础类型 —— void

    声明为 void 类型表示没有任何类型 当一个函数没有返回值时 通常其返回值会声明为 void 类型 function gretter void console log 123 编译成js function gretter console
  • 使用Python实现K均值聚类算法

    使用Python实现K均值聚类算法 K均值聚类算法是一种经典的无监督学习算法 它将数据集分为K个簇 每个簇中的数据点与同一簇中心点的距离最小 不同簇的数据点之间的距离较大 该算法常用于数据挖掘 图像处理等领域 以下是其优缺点和Python实
  • Electron+Vue入门(二)vue-cli3.0+electron项目初始化

    第一步 用vue cli3 0创建一个项目 打开命令行工具 vue create demo 选择默认 安装完成 第二步 安装vue cli plugin electron builder 进入项目 cd demo 进入vue项目管理器 vu
  • 怎么样理解同步清零和异步清零?

    DA专业论坛 通用设计 求助 大家是怎么样理解 同步清零和 异步清零的 查看完整版本 求助 大家是怎么样理解同步清零和异步清零的 mxflying 2005 4 20 03 45 求助 大家是怎么样理解 同步清零和 异步清零的 本人对 同步
  • ROS-kinetic中Gazebo中的机械臂仿真报错解决

    1 警告 其实是错误 但也要解决 WARN 1682069601 434351 0 000000 Controller Spawner couldn t find the expected controller manager ROS in
  • 有哪些因素影响服务器的访问速度

    在网络环境下 根据服务器提供的服务类型不同 分为文件服务器 数据库服务器 应用程序服务器 WEB服务器等 一些对服务器的了解不够深入的朋友 会认为服务器的配置越高 服务器的访问速度就会越快 这句话有一定的道理 但是服务器的配置高低只是影响服
  • 计算机视觉项目实战-图像特征检测harris、sift、特征匹配

    欢迎来到本博客 本次博客内容将继续讲解关于OpenCV的相关知识 作者简介 目前计算机研究生在读 主要研究方向是人工智能和群智能算法方向 目前熟悉python网页爬虫 机器学习 计算机视觉 OpenCV 群智能算法 然后正在学习深度学习的相
  • android中下拉菜单的制作(详解)

    在我们的android中下拉菜单的制作有两种的方法 1 一种的方式就是通过我们的布局文件的方法制作 2 第二种方式就是通过我们的java代码的方式制作 第一种方式
  • deepin 20.2版本亮度调节问题暂时解决方案

    可在设置 gt 键盘和语言 gt 快捷键 中设置自己需要的快捷键 建议alt 1和alt 2这两个 与现有快捷键没有冲突 使用原来的快捷键会提示冲突 如果覆盖了设置可能会使原来的快捷键失效 分别添加下面的命令 降低亮度 echo your
  • Anaconda 换源与更新

    参考 Windows下Anaconda安装 换源与更新 里面很详细介绍了 conda 的更新 与 Anaconda 的更新
  • Node.js入门笔记(一)——环境问题和版本号问题

    Node js入门笔记 一 1 node js的版本管理工具 nvm 2 npm全局安装和局部安装 3 开发环境安装与生产环境安装 4 其他常用的npm语法 5 版本号里面的讲究 6 npm上传包 其实就是寒假比较无聊搭了这个自己的博客网站
  • Visual Studio+VAssistX自动添加注释

    1 增加函数头注释 右击函数名 然后依次点击 Refacto gt Document Method 这个时候函数头注释就会蹦出来 不过这个注释的格式是默认的 想修改注释格式 可以通过以下方法 点击 VAssistX gt Visual VA
  • IE下载文件时,中文文件名乱码问题

    经排查 Content Disposition中的filename进行了两次URL转码 以汉字漫为例 第一次转码 漫变为 E6 BC AB 第二次转码 E6 BC AB变为 25E6 25BC 25AB 第二次转码时 因为 是特殊字符 所以
  • word2vector学习笔记(一)

    word2vector学习笔记 一 最近研究了一下google的开源项目word2vector http code google com p word2vec 其实这玩意算是神经网络在文本挖掘的一项成功应用 本文是看了论文 Distribu
  • Spring中如何在一个Bean中注入一个内部Bean呢?

    转自 Spring中如何在一个Bean中注入一个内部Bean呢 在日常开发中 有些实体类的定义 一个类中包含了另一个类 那么在Spring Bean中 同样也有此种操作 下文将讲述使用xml配置文件的方式注入内部bean的方法 实现思路 使