欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析Java的Spring框架中IOC容器容器的應(yīng)用

 更新時(shí)間:2015年12月05日 15:13:57   投稿:goldensun  
這篇文章主要介紹了Java的Spring框架中IOC容器容器的應(yīng)用,包括BeanFactory容器和ApplicationContext容器的介紹,需要的朋友可以參考下

Spring容器是Spring框架的核心。容器將創(chuàng)建對(duì)象,它們連接在一起,配置它們,并從創(chuàng)建到銷毀管理他們的整個(gè)生命周期。在Spring容器使用依賴注入(DI)來管理組成應(yīng)用程序的組件。這些對(duì)象被稱為Spring Beans。
容器獲得其上的哪些對(duì)象進(jìn)行實(shí)例化,配置和組裝通過閱讀提供的配置元數(shù)據(jù)的說明。配置元數(shù)據(jù)可以通過XML,Java注釋或Java代碼來表示。下面的圖是Spring如何工作的高層次圖。 Spring IoC容器是利用Java的POJO類和配置元數(shù)據(jù)的產(chǎn)生完全配置和可執(zhí)行的系統(tǒng)或應(yīng)用程序。

2015125165503855.jpg (493×341)

Spring提供了BeanFactory和ApplicationContext兩種不同類型的容器:

BeanFactory容器
這是最簡(jiǎn)單的容器提供DI的基本支持,并由org.springframework.beans.factory.BeanFactory 接口中定義。BeanFactory或者相關(guān)的接口,例如實(shí)現(xiàn)BeanFactoryAware,InitializingBean,DisposableBean,仍然存在在Spring向后兼容性與大量的 Spring 整合第三方框架的目的。

有相當(dāng)數(shù)量的接口來提供直出隨取即用的Spring 的 BeanFactory接口的實(shí)現(xiàn)。最常用BeanFactory 實(shí)現(xiàn)的是 XmlBeanFactoryclass。此容器從XML文件中讀取配置元數(shù)據(jù),并使用它來創(chuàng)建一個(gè)完全配置的系統(tǒng)或應(yīng)用程序。

BeanFactory中通常是首選的資源,如移動(dòng)設(shè)備或基于applet的應(yīng)用受到限制。因此,使用一個(gè)ApplicationContext,除非你有一個(gè)很好的理由不這樣做。

例如:
讓我們使用 Eclipse IDE,然后按照下面的步驟來創(chuàng)建一個(gè)Spring應(yīng)用程序:

2015125151001831.png (587×296)

這里是HelloWorld.java文件的內(nèi)容:

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

下面是第二個(gè)文件 MainApp.java 的內(nèi)容:

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

有以下兩個(gè)要點(diǎn)需要注意在主要程序中:

第一步是創(chuàng)建工廠對(duì)象,我們使用的框架API XmlBeanFactory() 來創(chuàng)建工廠bean,并使用ClassPathResource() API來加載在CLASSPATH中可用的bean配置文件。在API 需要 XmlBeanFactory() 創(chuàng)建和初始化所有對(duì)象。在配置文件中提到的 bean 類。

第二個(gè)步驟是用來使用創(chuàng)建的bean工廠對(duì)象的 getBean() 方法獲得所需的 bean。此方法使用bean 的 id 返回,最終可以構(gòu)造到實(shí)際對(duì)象的通用對(duì)象。一旦有了對(duì)象,就可以使用這個(gè)對(duì)象調(diào)用任何類方法。

以下是bean配置文件beans.xml中的內(nèi)容

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

一旦創(chuàng)建源和bean配置文件來完成,讓我們運(yùn)行應(yīng)用程序。如果一切順利,您的應(yīng)用程序,這將打印以下信息:

Your Message : Hello World!


ApplicationContext容器
應(yīng)用程序上下文(Application Context)是Spring更先進(jìn)的容器。以它的BeanFactory類似可以加載bean定義,并根據(jù)要求分配bean。此外,它增加了更多的企業(yè)特定的功能,例如從一個(gè)屬性文件解析文本消息的能力,并發(fā)布應(yīng)用程序事件感興趣的事件監(jiān)聽器的能力。此容器是由org.springframework.context.ApplicationContext 接口定義。

ApplicationContext 包括了 BeanFactory 所有的功能,因此通常建議在 BeanFactory。 BeanFactory中仍然可以用于重量輕的應(yīng)用,如移動(dòng)裝置或基于小應(yīng)用程序的應(yīng)用程序。

最常用的 ApplicationContext 實(shí)現(xiàn)是:

FileSystemXmlApplicationContext: 這個(gè)容器加載從一個(gè)XML文件中的bean的定義。在這里,你需要提供給構(gòu)造函數(shù)中的XML bean配置文件的完整路徑。

ClassPathXmlApplicationContext 這個(gè)容器加載從一個(gè)XML文件中的bean的定義。在這里,您不需要提供XML文件的完整路徑,但你需要正確設(shè)置CLASSPATH,因?yàn)檫@個(gè)容器會(huì)看在CLASSPATH中bean的XML配置文件.

WebXmlApplicationContext: 此容器加載所有的bean從Web應(yīng)用程序中定義的XML文件。

我們已經(jīng)看到在Spring 的Hello World示例ClassPathXmlApplicationContext容器的例子,我們將更多地談?wù)揦mlWebApplicationContext 在一個(gè)單獨(dú)的章節(jié)時(shí),我們將討論基于Web的Spring應(yīng)用程序。所以,讓我們看到FileSystemXmlApplicationContext一個(gè)例子。

例子:
我們使用Eclipse IDE,然后按照下面的步驟來創(chuàng)建一個(gè) Spring 應(yīng)用程序:

2015125151100266.png (593×298)

這里是HelloWorld.java 文件的內(nèi)容:

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

下面是第二個(gè)文件MainApp.java 的內(nèi)容:

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

有以下兩個(gè)要點(diǎn)需要注意在主要程序中:

第一步是創(chuàng)建工廠對(duì)象,我們使用的框架API的 FileSystemXmlApplicationContext來從給定的路徑加載bean配置文件之后,創(chuàng)建工廠bean。API的FileSystemXmlApplicationContext()需要?jiǎng)?chuàng)建和初始化所有的對(duì)象。在XML bean配置文件中提到的bean類。

第二個(gè)步驟是用來使用創(chuàng)建的上下文的getBean()方法獲得所需的bean。此方法使用bean的id返回,最終可以構(gòu)造到實(shí)際對(duì)象的通用對(duì)象。一旦有了對(duì)象,我們就可以使用這個(gè)對(duì)象調(diào)用任何類方法。

以下是bean配置文件beans.xml中的內(nèi)容

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

一旦創(chuàng)建源代碼和bean配置文件完成,讓我們運(yùn)行應(yīng)用程序。如果一切順利,這將打印以下信息:

Your Message : Hello World!

總結(jié)

在ApplicationContext 容器包括BeanFactory的容器的所有功能,所以因此通常建議在BeanFactory。 BeanFactory仍然可以用于重量輕的應(yīng)用,如移動(dòng)裝置或基于小應(yīng)用程序的應(yīng)用中的數(shù)據(jù)量和速度是顯著。

相關(guān)文章

  • SpringBoot配置攔截器的示例

    SpringBoot配置攔截器的示例

    這篇文章主要介紹了SpringBoot配置攔截器的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • Spring MVC的參數(shù)綁定和返回值問題

    Spring MVC的參數(shù)綁定和返回值問題

    這篇文章主要介紹了Spring MVC的參數(shù)綁定和返回值問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 詳解SpringBoot接收參數(shù)的五種形式

    詳解SpringBoot接收參數(shù)的五種形式

    在Spring Boot中,接收參數(shù)可以通過多種方式實(shí)現(xiàn),本文給大家介紹了SpringBoot接收參數(shù)的五種形式,并通過代碼和圖文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 分享40個(gè)Java多線程問題小結(jié)

    分享40個(gè)Java多線程問題小結(jié)

    多個(gè)線程共存于同一JVM進(jìn)程里面,所以共用相同的內(nèi)存空間,較之多進(jìn)程,多線程之間的通信更輕量級(jí),本文給大家分享40個(gè)Java多線程問題小結(jié) 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • 最小樹形圖模板朱劉算法分享

    最小樹形圖模板朱劉算法分享

    這篇文章主要介紹了最小樹形圖模板朱劉算法,有需要的朋友可以參考一下
    2014-01-01
  • SpringBoot如何進(jìn)行業(yè)務(wù)校驗(yàn)實(shí)例詳解

    SpringBoot如何進(jìn)行業(yè)務(wù)校驗(yàn)實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于SpringBoot如何進(jìn)行業(yè)務(wù)校驗(yàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • SpringBoot @Import與@Conditional注解使用詳解

    SpringBoot @Import與@Conditional注解使用詳解

    在了解spring boot自動(dòng)配置原理前,再來了解下兩個(gè)注解@Import注解和@Conditional注解,@Conditional是Spring4新提供的注解,它的作用是按照一定的條件進(jìn)行判斷,滿足條件給容器注冊(cè)bean
    2022-10-10
  • Java找不到或無法加載主類及編碼錯(cuò)誤問題的解決方案

    Java找不到或無法加載主類及編碼錯(cuò)誤問題的解決方案

    今天小編就為大家分享一篇關(guān)于Java找不到或無法加載主類及編碼錯(cuò)誤問題的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • SpringCloud Config配置中心原理以及環(huán)境切換方式

    SpringCloud Config配置中心原理以及環(huán)境切換方式

    這篇文章主要介紹了SpringCloud Config配置中心原理以及環(huán)境切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 使用JSON.toJSONString()返回{}的原因

    使用JSON.toJSONString()返回{}的原因

    這篇文章主要介紹了使用JSON.toJSONString()返回{}的原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評(píng)論