淺析Java的Spring框架中IOC容器容器的運用。本站提示廣大學習愛好者:(淺析Java的Spring框架中IOC容器容器的運用)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析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依然可以用於分量輕的運用,如挪動裝配或基於小運用法式的運用中的數據量和速度是明顯。