当前位置: 移动技术网 > IT编程>开发语言>Java > 浅析Java的Spring框架中IOC容器容器的应用

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

2019年07月22日  | 移动技术网IT编程  | 我要评论
spring容器是spring框架的核心。容器将创建对象,它们连接在一起,配置它们,并从创建到销毁管理他们的整个生命周期。在spring容器使用依赖注入(di)来管理组成应

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

2015125165503855.jpg (493×341)

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应用程序:

2015125151001831.png (587×296)

这里是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 应用程序:

2015125151100266.png (593×298)

这里是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仍然可以用于重量轻的应用,如移动装置或基于小应用程序的应用中的数据量和速度是显著。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网