最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析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)文章

  • java中SpringBoot?自動(dòng)裝配的原理分析

    java中SpringBoot?自動(dòng)裝配的原理分析

    這篇文章主要介紹了SpringBoot?自動(dòng)裝配的原理分析的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • springboot連接redis并動(dòng)態(tài)切換database的實(shí)現(xiàn)方法

    springboot連接redis并動(dòng)態(tài)切換database的實(shí)現(xiàn)方法

    這篇文章主要介紹了springboot連接redis并動(dòng)態(tài)切換database,本文主為通過修改ConnectionFactory從而達(dá)到動(dòng)態(tài)切換database的效果,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • SpringMvc請(qǐng)求處理參數(shù)?和?響應(yīng)數(shù)據(jù)處理的示例詳解

    SpringMvc請(qǐng)求處理參數(shù)?和?響應(yīng)數(shù)據(jù)處理的示例詳解

    這篇文章主要介紹了SpringMvc請(qǐng)求處理參數(shù)和響應(yīng)數(shù)據(jù)處理,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • spring boot集成mongodb的增刪改查的示例代碼

    spring boot集成mongodb的增刪改查的示例代碼

    這篇文章主要介紹了spring boot集成mongodb的增刪改查的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Spring?Security+JWT簡(jiǎn)述(附源碼)

    Spring?Security+JWT簡(jiǎn)述(附源碼)

    SpringSecurity是一個(gè)強(qiáng)大的可高度定制的認(rèn)證和授權(quán)框架,對(duì)于Spring應(yīng)用來說它是一套Web安全標(biāo)準(zhǔn),下面這篇文章主要給大家介紹了關(guān)于Spring?Security+JWT簡(jiǎn)述的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 解決MyBatis返回結(jié)果類型為Boolean的問題

    解決MyBatis返回結(jié)果類型為Boolean的問題

    這篇文章主要介紹了解決MyBatis返回結(jié)果類型為Boolean的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 簡(jiǎn)單說說Java SE、Java EE、Java ME三者之間的區(qū)別

    簡(jiǎn)單說說Java SE、Java EE、Java ME三者之間的區(qū)別

    本篇文章小編就為大家簡(jiǎn)單說說Java SE、Java EE、Java ME三者之間的區(qū)別。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10
  • springboot集成redis啟動(dòng)報(bào)錯(cuò)問題的解決方式

    springboot集成redis啟動(dòng)報(bào)錯(cuò)問題的解決方式

    這篇文章主要介紹了springboot集成redis啟動(dòng)報(bào)錯(cuò)問題的解決方式,從錯(cuò)誤信息上看缺少pool2相關(guān)包,查詢資料發(fā)現(xiàn)當(dāng)redis客戶端選擇Lettuce時(shí)候需要增加:commons-pool2
    添加引用,重啟服務(wù),需要的朋友可以參考下
    2023-11-11
  • Mybatis-Plus中g(shù)etOne方法獲取最新一條數(shù)據(jù)的示例代碼

    Mybatis-Plus中g(shù)etOne方法獲取最新一條數(shù)據(jù)的示例代碼

    這篇文章主要介紹了Mybatis-Plus中g(shù)etOne方法獲取最新一條數(shù)據(jù),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Java 數(shù)組差集實(shí)例代碼

    Java 數(shù)組差集實(shí)例代碼

    這篇文章主要介紹了Java 數(shù)組差集實(shí)例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論

鹰潭市| 海口市| 神木县| 石屏县| 富顺县| 神池县| 南部县| 共和县| 彰化市| 永城市| 石棉县| 满城县| 县级市| 德阳市| 会东县| 天等县| 盐池县| 正蓝旗| 泊头市| 怀安县| 东城区| 大丰市| 大新县| 雷山县| 轮台县| 罗甸县| 花垣县| 连云港市| 常德市| 商河县| 龙里县| 榆中县| 太康县| 商水县| 金寨县| 修武县| 娄烦县| 马公市| 涪陵区| 页游| 和静县|