浅析Java的Spring框架中IOC容器容器的应用


Spring容器是Spring框架的核心。容器将创建对象,它们连接在一起,配置它们,并从创建到销毁管理他们的整个生命周期。在Spring容器使用依赖注入(DI)来管理组成应用程序的组件。这些对象被称为Spring Beans。
容器获得其上的哪些对象进行实例化,配置和组装通过阅读提供的配置元数据的说明。配置元数据可以通过XML,Java注释或Java代码来表示。下面的图是Spring如何工作的高层次图。 Spring IoC容器是利用Java的POJO类和配置元数据的产生完全配置和可执行的系统或应用程序。

Spring提供了BeanFactory和ApplicationContext两种不同类型的容器:

BeanFactory容器
这是最简单的容器提供DI的基本支持,并由org.springframework.beans.factory.BeanFactory 接口中定义。BeanFactory或者相关的接口,例如实现BeanFactoryAware,InitializingBean,DisposableBean,仍然存在在Spring向后兼容性与大量的 Spring 整合第三方框架的目的。

有相当数量的接口来提供直出随取即用的Spring 的 BeanFactory接口的实现。最常用BeanFactory 实现的是 XmlBeanFactoryclass。此容器从XML文件中读取配置元数据,并使用它来创建一个完全配置的系统或应用程序。

BeanFactory中通常是首选的资源,如移动设备或基于applet的应用受到限制。因此,使用一个ApplicationContext,除非你有一个很好的理由不这样做。

例如:
让我们使用 Eclipse IDE,然后按照下面的步骤来创建一个Spring应用程序:

这里是HelloWorld.java文件的内容:

package com.yiibai;

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

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();
 }
}

有以下两个要点需要注意在主要程序中:

第一步是创建工厂对象,我们使用的框架API XmlBeanFactory() 来创建工厂bean,并使用ClassPathResource() API来加载在CLASSPATH中可用的bean配置文件。在API 需要 XmlBeanFactory() 创建和初始化所有对象。在配置文件中提到的 bean 类。

第二个步骤是用来使用创建的bean工厂对象的 getBean() 方法获得所需的 bean。此方法使用bean 的 id 返回,最终可以构造到实际对象的通用对象。一旦有了对象,就可以使用这个对象调用任何类方法。

以下是bean配置文件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="helloWorld" class="com.yiibai.HelloWorld">
 <property name="message" value="Hello World!"/>
 </bean>

</beans>

一旦创建源和bean配置文件来完成,让我们运行应用程序。如果一切顺利,您的应用程序,这将打印以下信息:

Your Message : Hello World!


ApplicationContext容器
应用程序上下文(Application Context)是Spring更先进的容器。以它的BeanFactory类似可以加载bean定义,并根据要求分配bean。此外,它增加了更多的企业特定的功能,例如从一个属性文件解析文本消息的能力,并发布应用程序事件感兴趣的事件监听器的能力。此容器是由org.springframework.context.ApplicationContext 接口定义。

ApplicationContext 包括了 BeanFactory 所有的功能,因此通常建议在 BeanFactory。 BeanFactory中仍然可以用于重量轻的应用,如移动装置或基于小应用程序的应用程序。

最常用的 ApplicationContext 实现是:

FileSystemXmlApplicationContext: 这个容器加载从一个XML文件中的bean的定义。在这里,你需要提供给构造函数中的XML bean配置文件的完整路径。

ClassPathXmlApplicationContext 这个容器加载从一个XML文件中的bean的定义。在这里,您不需要提供XML文件的完整路径,但你需要正确设置CLASSPATH,因为这个容器会看在CLASSPATH中bean的XML配置文件.

WebXmlApplicationContext: 此容器加载所有的bean从Web应用程序中定义的XML文件。

我们已经看到在Spring 的Hello World示例ClassPathXmlApplicationContext容器的例子,我们将更多地谈论XmlWebApplicationContext 在一个单独的章节时,我们将讨论基于Web的Spring应用程序。所以,让我们看到FileSystemXmlApplicationContext一个例子。

例子:
我们使用Eclipse IDE,然后按照下面的步骤来创建一个 Spring 应用程序:

这里是HelloWorld.java 文件的内容:

package com.yiibai;

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

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class MainApp {
 public static void main(String[] args) {

 ApplicationContext context = new FileSystemXmlApplicationContext
  ("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml");

 HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
 obj.getMessage();
 }
}

有以下两个要点需要注意在主要程序中:

第一步是创建工厂对象,我们使用的框架API的 FileSystemXmlApplicationContext来从给定的路径加载bean配置文件之后,创建工厂bean。API的FileSystemXmlApplicationContext()需要创建和初始化所有的对象。在XML bean配置文件中提到的bean类。

第二个步骤是用来使用创建的上下文的getBean()方法获得所需的bean。此方法使用bean的id返回,最终可以构造到实际对象的通用对象。一旦有了对象,我们就可以使用这个对象调用任何类方法。

以下是bean配置文件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="helloWorld" class="com.yiibai.HelloWorld">
 <property name="message" value="Hello World!"/>
 </bean>

</beans>

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

Your Message : Hello World!

总结

在ApplicationContext 容器包括BeanFactory的容器的所有功能,所以因此通常建议在BeanFactory。 BeanFactory仍然可以用于重量轻的应用,如移动装置或基于小应用程序的应用中的数据量和速度是显著。



相关阅读:
史上最详细的js日期正则表达式分享
试用php中oci8扩展
c#网络唤醒功能实现
jQuery ajax方法传递中文时出现中文乱码的解决方法
win8.1系统Chrome浏览器出现"没有注册类"的解决方法
js返回前一页刷新本页重载页面
C语言fillpoly函数详解
进行多文件内容导入数据库Linux如何将多个文件内容合成一个
在mac中怎么看文件夹大小 苹果mac查看文件夹大小图文教程
教你如何静默安装ORACLE
jQuery中serializeArray()与serialize()的区别实例分析
win10相机打不开出现错误0xa00f4273该怎么办?
XCode编译速度慢的处理方法
php的ddos攻击解决方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 圆梦作文100字 10个网络神回复,读懂中国式人生 学习最美女教师张丽莉心得体会 海的外面是大漠 小学三年级作文300字:一朵桃花的悲情日记 迷人的青海湖 爱很轻 就在我身边 初中初一作文750字:圆明园的呜咽 刺痛心灵的话 对女友说超肉麻的情话 我爱春天450字 晨道 县化肥质量专项整治工作总结 机电实习日记 幸福在身边演讲稿 社区2015年情人节活动主题 漩涡作文 初中初三作文800字:梦醒时分 曾经的美(追忆的痛) 什么都好,可惜你们的爱无法共鸣 人生有两种境界:一是痛而不言,二是笑而不语 欠她一个诺言(相识—3)作文600字 醉了、吐了、哭了、 雪450字 天凉,好个秋(一) 悼词的特征 读《中国的大车,我们拉》有感_中国的大车,我们拉读后感700字 烧船打假 考初中的烦恼作文650字 三年级下期开学家长会发言稿 人在囧途电影观后感1200字作文:乐于助人的精神 海静发表日志:陌生的城市 续,情殇 形容心情失落的语句 狂风暴雨,我在大街上行走 我的大学,你在哪里? 机械军团经典台词 梦想与爱同在 姥爷的手 山的作文600字 快感与幸福 做一个对得起人民的好干部 提高初中物理群体成绩的探讨 农牧局贯彻落实五化求突破思考 如果我还没来 破碎*——*沉淀作文300字 大家好 我好久没发布了 清平乐独宿博山王氏庵阅读答案翻译 国际经济与贸易专业推荐信 班主任工作经验交流材料作文600字 你的眉眼,成彼岸

Copyright © 2016 phpStudy |