spring项目概念-BeanFactoryApplicationContext
生活随笔
收集整理的這篇文章主要介紹了
spring项目概念-BeanFactoryApplicationContext
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看一下,接下來又是一個概念性的東西,不過這個概念就比較具體一些了,DI和IOC是屬于思想性質的,applicationContext和BeanFactory,簡單說一下這個對象,再看這兩個對象,咱們先說BeanFactory,這是一個接口,這個BeanFactory接口,是提供一個繼承關系,繼承關系組,BeanFactory是在最頂層
最頂層的一個接口,換句話說,Spring設計的第一個接口,這種接口的功能是多還是少,像這種頂層的,繼承關系是在頂層的,不管是對象還是接口,他的功能設計肯定是比較少的,因為子類是會繼承所有父類,所以越往下就越強大,但是這個BeanFactory你要知道,這是咱們最頂層的接口,然后你可以看到隨著時間的推移,他不斷地去完善BeanFactory接口,要加入功能通過加入接口的方式,然后往下發展,才會出現ApplicationContext接口,所以這里面的話,首先,BeanFactory接口,首先你要知道,Spring的最原始接口,原始接口,然后針對這種原始接口的實現類,這種功能比較單一,針對原始接口的實現類,功能較為單一,然后呢,原始接口BeanFactory,BeanFactory雖然原始,但是他是個容器,不管多原始,最基本的它是個容器,那BeanFactory的實現類,接口實現類的容器,特點是在每次獲得對象時,才會創建對象,啥意思呢,就像咱們的ApplicationContext,ApplicationContext作為新一代的容器,他的特點是,容器在創建的時候,這兩行代碼我不要,只留這一行,他也會在我創建容器的時候,把容器里的對象都創建出來,咱們在底下獲得的時候,實際上它是直接從容器中拿,而咱們的BeanFactory,早年的BeanFactory接口,特點就是你在獲得的時候才會創建,很明顯Spring剛出來的時候,咱們系統資源,都比較匱乏,那是2000初的事了,那個時候256M內存,標配內存是56M內存,那個年代的硬件資源是相當匱乏,那個時候你們玩過郵箱嗎,那會的郵箱,個人空間只有20M,注冊郵箱個人空間是20M,滿20M如果你不刪,你就收不了新郵件了,現在一封郵件就20了,發個附件就20M了,是不是這個意思,那會資源真的是匱乏,所以那個時候框架,Spring當時的BeanFactory的實現類,內存不夠,全創建出來可能內存爆炸了,內存撐爆了,隨著后來的發展,發展了ApplicationContext,用到了這個接口,定義了下面的實現類,那ApplicationContext的特點,是什么呢,在繼承比較末端的一些接口了,他的特點是每次容器啟動時,就會創建容器中配置的所有對象,所以你用ApplicationContext容器,每次獲得時,就會創建了,然后除此以外還提供了更加豐富的功能,提供了更多功能,從結論上來說呢,那以后在開發過程當中呢,在WEB開發中,使用ApplicationContext,在資源匱乏的環境,可以使用BeanFactory,那有人說啥叫資源匱乏呢,將來有一天你在手機上,開發的時候,手機上來講,永遠是匱乏的,咱們手機你也看得出來,硬件的高速發展階段,為什么硬件需要這么高速發展呢,這是因為性能的原因,一旦硬件達到一個飽和的狀態,硬件的發展就會放緩,你看咱們的電腦實際上就已經放緩了,當年2000年初的那會,CPU的性能一方面受制于導體的限制,另一方面硬件相對比較飽和,所以說是放緩了,你看現在因特爾的研究,都往哪方面研究了,效能,功耗,怎么玩更省電,往這個方向,這是咱們的結論,然后呢ApplicationContext,他還有兩個典型的實現類,一個典型的實現類是從類路徑下加載查找配置文件的,叫做ClassPathXmlApplicationContext,還有一個從咱們的絕對路徑,從硬盤絕對路徑下,加載配置文件,其實咱們也用不著,FileSystemXmlApplicationContext,這是兩個典型的ApplicationContext的實現類,主要是使用ClassPath這個,加載配置文件,從磁盤絕對路徑加載的話,你這個路徑要寫的話,就是D盤冒號,xxx文件夾的,這個就是咱們的概念,知道就行了
看一下配置,配置詳解,Spring的配置,Spring學起來簡單,最煩的就是配置文件,配置量還比較大,看一下Bean元素它是干嘛用的,凡是要交給Spring容器來管理的對象,是不是都是用Bean來描述,所以使用Bean元素,該元素,描述需要Spring容器管理的對象,描述的話你得看屬性了,name屬性咱們剛才說過,name屬性它是干嘛的,就是給被管理的對象,起個名字,起這個名字的目的,就是在獲取的時候,用這個名字獲取,獲得對象時,根據該名稱獲得,獲得對象,然后第二個屬性是class屬性,class屬性的話,被管理對象的完整類名,那完整類名的話,要完整路徑的目的,就是實例化對象,就是這么回事,再介紹一個屬性,比較早年的,id屬性,他就叫做id屬性,再看看id屬性,id屬性首先從功能性上來講,與name屬性一模一樣,哪有人說一模一樣那還要id屬性干嘛,就直接用name屬性就可以了,id在整個軟件界,他肯定要符合唯一的規范,id的話,規則,名稱不可重復,并且不能夠使用特殊字符,那就是說ID的話,我想配置一個帶有特殊字符的,那我是做不到的,比如說在早年,與Struts1整合的時候,給Action配名字,一般都是希望加上一個斜杠,比如/UserAction,這樣配的,但是id屬性你這樣配他就給你報錯,啟動的時候告訴你,屬性出現非法字符,于是為了讓名字配置更加靈活,所以id的規矩不能壞,不能把id的規則給改了,所以他就增加了一個屬性叫做name屬性,這樣的話就在name屬性里面,可以使用特殊字符了,知道啥意思不,特殊字符,百分號,橫杠這些都可以有了,這樣的話起名字會比較靈活一些,其實它叫了name屬性,他不受id屬性的限制,所以他這個name屬性的特點,第一名稱可以重復,可以重復,并且可以使用特殊字符,但是重復,我知道是哪個user,這個不需要關注,因為首先咱們開發的時候,不推薦使用特殊字符,因為沒有任何意義,而到底是配置兩個user,name都叫user,你到底獲得的是哪一個,自己試去,我不告訴你,有興趣你自己去試,錯誤的路你還想知道結果,我不給你支持,這是name的特點和id的特點,可以重復,不可以重復,可以使用特殊字符,和不可以使用特殊字符,那最終的結論是什么呢,結論的話,盡量使用name屬性,id是老古董屬性了,那這樣的話id屬性就介紹完了,然后把名字輸入進來,叫做user
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!-- 將User對象交給Spring容器管理 --><!-- Bean元素:使用該元素描述需要spring容器管理的對象class屬性:被管理對象的完整類名name屬性:給被管理的對象起個名字,獲得對象時根據該名稱獲得對象.可以重復,可以使用特殊字符id屬性:與name屬性一模一樣名稱不可重復,不能使用特殊字符結論:盡量使用name屬性 --><bean name="user" class="com.learn.bean.User"></bean></beans>
Spring配置的詳解之Bean,咱們幾天的內容比較碎,一塊和一塊之間的聯系可能不是很大
?
總結
以上是生活随笔為你收集整理的spring项目概念-BeanFactoryApplicationContext的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring项目概念-IOCDI
- 下一篇: spring配置详解-三种对象创建方式_