Spring BeanFactory 容器

转载自  Spring BeanFactory 容器

Sping 的 BeanFactory 容器

这是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在 org.springframework.beans.factory.BeanFactory 中被定义。 BeanFactory 和相关的接口,比如BeanFactoryAware、 DisposableBean、InitializingBean,仍旧保留在 Spring 中,主要目的是向后兼容已经存在的和那些 Spring 整合在一起的第三方框架。

在 Spring 中,有大量对 BeanFactory 接口的实现。其中,最常被使用的是 XmlBeanFactory 类。这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。

在资源宝贵的移动设备或者基于 applet 的应用当中, BeanFactory 会被优先选择。否则,一般使用的是 ApplicationContext,除非你有更好的理由选择 BeanFactory。

例子:

假设我们已经安装 Eclipse IDE,按照下面的步骤,我们可以创建一个 Spring 应用程序。

步骤描述
1创建一个名为 SpringExample 的工程并在 src 文件夹下新建一个名为 com.tutorialspoint 文件夹。
2点击右键,选择 Add External JARs 选项,导入 Spring 的库文件,正如我们在 Spring Hello World Example 章节中提到的导入方式。
3在 com.tutorialspoint 文件夹下创建 HelloWorld.java 和 MainApp.java两个类文件。
4在 src 文件夹下创建 Bean 的配置文件 Beans.xml
5最后的步骤是创建所有 Java 文件和 Bean 的配置文件的内容,按照如下所示步骤运行应用程序。

下面是文件 HelloWorld.java 的内容:

package com.tutorialspoint;
public class HelloWorld {private String message;public void setMessage(String message){this.message  = message;}public void getMessage(){System.out.println("Your Message : " + message);}
}

下面是文件 MainApp.java 的内容:

package com.tutorialspoint;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class MainApp {public static void main(String[] args) {XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("Beans.xml"));HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");obj.getMessage();}
}

在主程序当中,我们需要注意以下两点:

  • 第一步利用框架提供的 XmlBeanFactory() API 去生成工厂 bean 以及利用 ClassPathResource() API 去加载在路径 CLASSPATH 下可用的 bean 配置文件。XmlBeanFactory() API 负责创建并初始化所有的对象,即在配置文件中提到的 bean。

  • 第二步利用第一步生成的 bean 工厂对象的 getBean() 方法得到所需要的 bean。 这个方法通过配置文件中的 bean ID 来返回一个真正的对象,该对象最后可以用于实际的对象。一旦得到这个对象,就可以利用这个对象来调用任何方法。

下面是配置文件 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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="helloWorld" class="com.tutorialspoint.HelloWorld"><property name="message" value="Hello World!"/></bean></beans>

如果你已经完成上面的内容,接下来,让我们运行这个应用程序。如果程序没有错误,你将从控制台看到以下信息:

Your Message : Hello World!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#开发人员应该知道的13件事情

本文讲述了C#开发人员应该了解到的13件事情&#xff0c;希望对C#开发人员有所帮助。 1. 开发过程 开发过程是错误和缺陷开始的地方。使用工具可以帮助你在发布之后&#xff0c;解决掉一些问题。 编码标准 遵照编码标准可以编写出更多可维护的代码&#xff0c;特别是在由多个开发…

充电提示音_iPhone如何自定义充电提示音,图文教程

昨天给小伙伴们分享了几个iOS14的充电提示音和设置方法&#xff0c;不过有的小伙伴可能需要设置自己喜欢的声音为充电提示音&#xff0c;所以今天就来教大家自定义喜欢的iOS14充电提示音。教程由于比较仔细&#xff0c;看起来比较长&#xff0c;其实很简单&#xff0c;主要分为…

Scanner获取用户输入

next()和hasNext() public class Demo02_Scanner {public static void main(String[] args) {//创建一个扫描器对象&#xff0c;用于接收键盘数据Scanner scanner new Scanner(System.in);System.out.println("使用next方式接收: ");//判断用户有没有输入字符串if …

idea Lombok插件

此文提供对于Lombok的简单使用 1、Lombok简介 Lombok能通过注解的方式&#xff0c;在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。 2、Lombok插件安装 想要使用 Lombok&#xff0c;必须要安装一个 Lombok 插件&#xff0c;不然编辑器无法识…

复变函数画图cosz图像_用matlab绘制x=(1+cosu)cosv,y=(1+cosu)sinv,z=sinu图像?

用matlab绘制x(1cosu)cosv,y(1cosu)sinv,zsinu图像&#xff1f;234游戏网友 提出于 2019-07-19 07:04:26u-2*pi:0.01:2*pi;v-2*pi:0.01:2*pi;x(1cosu).*cosv;y(1cosu).*sinv;zsinu;polt3(x,y,z)xlabel(x);ylabel(y);zlabel(z);grid但是出现了&#xff1a;Errorusingplot3Vector…

赫夫曼编码字节数组

思路分析 代码实现 package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic; import com.sun.org.glassfish.external.statistics.StringStatistic;import java.util.*;/*** 创建人 wdl* 创建时间 2021/3/27* 描述*/ public class…

Spring ApplicationContext 容器

转载自 Spring ApplicationContext 容器 Spring ApplicationContext 容器 Application Context 是 spring 中较高级的容器。和 BeanFactory 类似&#xff0c;它可以加载配置文件中定义的 bean&#xff0c;将所有的 bean 集中在一起&#xff0c;当有请求的时候分配 bean。 另…

.NET Core 工具中的新内容

Visual Studio 2017 RC最近一个版本更新包括一套更新的.NET Core工具箱。这个版本带来了几项改进&#xff0c;包括改变了模版化、dotnet网络命令&#xff0c;以及许多缺陷修复。微软的Rich Lander发表了一份更新说明&#xff0c;陈述了.NET Core开发人员可以预期在.NET Core RC…

python binascii array('c')_详解Python中的array数组模块相关使用

初始化array实例化可以提供一个参数来描述允许那种数据类型&#xff0c;还可以有一个初始的数据序列存储在数组中。import arrayimport binasciis This is the array.a array.array(c, s)print As string:, sprint As array :, aprint As hex :, binascii.hexlify(a)数组配置…

你还可以续命几次?回顾DockPanel Suite项目的发展史

微软在设计Visual Studio.NET的时候汲取了之前IDE版本的各种教训&#xff0c;开始考虑怎样让开发人员能够快速调整多窗口的布局&#xff0c;灵活构建自己喜欢的日常界面。这种基于菜单条和悬浮面板的新界面也让Windows平台其他软件开发者豁然开朗&#xff0c;开始各种借鉴。微软…

利用赫夫曼编码进行数据解压

基本概念 代码实现 package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic; import com.sun.org.glassfish.external.statistics.StringStatistic;import java.security.AlgorithmConstraints; import java.util.*;/*** 创建人 w…

Spring Bean 定义

转载自 Spring Bean 定义 Bean 定义 被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。bean 是一个被实例化&#xff0c;组装&#xff0c;并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的&#xff0c;例如&#xff…

mysql5.7安装

MySQL 5.7 安装教程&#xff08;全步骤、保姆级教程&#xff09;_普通网友的博客-CSDN博客_mysql5.7的安装教程 Index of /mysql/downloads/MySQL-5.7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror This application requires Visual Studio 2013 x64 Redistribut…

检测窥屏_开挂、狙击、窥屏?乱象丛生的炉石狂野天梯,到底怎么了?

今日正文1 中午吃饭时&#xff0c;我第二十三次诱惑牌酱跟我一起去狂野玩&#xff0c;在他第二十三次拒绝后&#xff0c;我问他为什么&#xff0c;他放下了筷子看着我&#xff0c;只说了一个字&#xff1a;“乱”乱&#xff1f;嗯&#xff0c;想想最近的狂野&#xff0c;不论是…

.NET Core log4net 使用

log4net .NET Core 版使用&#xff0c;log4net 2.0.7版发布也有一段时间了&#xff0c;从2.0.6 版开始就已经支持.NET Core。 之前有介绍NLog .NET Core版的使用&#xff0c;ASP.NET Core 开发-Logging 使用NLog 写日志文件。 ASP.NET Core已经内置了日志支持,可以轻松输出到控…

Spring Bean 作用域

转载自 Spring Bean 作用域 Bean 的作用域 当在 Spring 中定义一个 bean 时&#xff0c;你必须声明该 bean 的作用域的选项。例如&#xff0c;为了强制 Spring 在每次需要时都产生一个新的 bean 实例&#xff0c;你应该声明 bean 的作用域的属性为 prototype。同理&#xff…

Java 计算两个时间相差的天,时,分钟,秒

public static String getDateTimePoor( Date startDate ,Date endDate ) {long nd 1000 * 24 * 60 * 60;long nh 1000 * 60 * 60;long nm 1000 * 60;// long ns 1000;// 获得两个时间的毫秒时间差异long diff endDate.getTime() - startDate.getTime();// 计算差多少天lo…

用赫夫曼树进行文件的压缩

思路分析 代码实现 package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStatistic; import com.sun.org.glassfish.external.statistics.StringStatistic;import javax.xml.bind.SchemaOutputResolver; import java.io.*; import java.s…

廖雪峰python教程整理笔记_廖雪峰python教程笔记(一)

变量与变量名 如 a 123&#xff0c;此时&#xff0c;python解释器在做了两件事&#xff0c;在内存中创建了一个整数123对象&#xff0c;在内存中创建了一个名为a的变量。并把它指向123&#xff0c;一个赋值语句被执行后&#xff0c;内存中一个变量名与它所指向的对象就是一对一…