Hello,今天給各位童鞋們分享的是Spring,趕緊拿出小本子記下來吧1、spring1.1、簡介spring:給軟體行業帶來了春天2002年首次推出了Spring框架的雛形: interface21框架spring框架
2021-06-26 17:41:41
Hello,今天給各位童鞋們分享的是Spring,趕緊拿出小本子記下來吧
1、spring
1.1、簡介
spring:給軟體行業帶來了春天
2002年首次推出了Spring框架的雛形: interface21框架
spring框架即以interface21框架為基礎,經過重新設計,並不斷豐富其內涵,於2004年3月24日,釋出了1.0正式版
Rod Johnson,spring Framework創始人,著名作者,很難想象他的學歷,他是悉尼大學的博士,然而他的專業不是計算機,而是音樂
spring理念:使現有的技術更加容易使用,本身是一個大雜燴,整合了現有的技術框架
SSH :Struct2 + Spring + Hibernate
SSM : Spring + SpringMvc + Mybatis
1.2、優點
Spring是一個開源的免費的框架(容器)Spring是一個輕量級的、非入侵式單獨框架控制反轉(IOC ), 面向切面程式設計(AOP)支援事務的處理,對框架整合的支援總結:Spring就是一個輕量級的控制反轉(IOC)和麵向切面程式設計(AOP)的框架1.3、組成
1.4、拓展
在Spring的官網有這個介紹:現代化的Java開發,說白了就是基於Spring的開發Spring Boot
一個快速開發的腳手架
基於SpringBoot可以快速地開發單個微服務
約定大於配置
Spring Cloud
SpringClould是基於SpringBoot實現的
因為現在大多數公司都在使用SpringBoot進行快速開發,學習SpringBoot的前提,需要完全掌握Spring以及SpringMVC
弊端:發展太久,違背原來的理念,配置十分繁瑣,人稱「配置地獄」
2、IOC理論推導
UserDao介面UserDaoImpl實現類UserService業務介面UserServiceImpl介面實現類~在我們之前的業務中,使用者的需求可能會影響我們原來的程式碼,我們需要根據使用者的需求去修改原始碼,如果程式程式碼量十分大,修改一次的成本代價十分昂貴
我們使用一個Set方法實現,已經發生可革命性的變化
之前,程式是主動創建物件,控制權在程式設計師手上使用了Set注入之後,程式不在具有主動性,而是變成了被動地接受物件private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
這種思想,從本質上解決了問題,我們不用再去管理物件的創建了,系統的耦合性大大降低,可以更加專注在業務的實現上,這就是IOC的願望
IOC本質
控制反轉Ioc(Inversion of Control),是一種設計思想,DI(依賴注入)是實現Ioc的一種方法,也有人認為DI只是Ioc的另一種說法,沒有IOC的程式中,我們使用面向物件程式設計,物件的創建與物件間的依賴關係完全硬編碼在程式中,物件的創建由程式自己控制,控制反轉後將物件的創建轉移給第三方,個人認為所謂控制反轉就是:獲得依賴物件的方式反轉了。
採用XMl方式配置Bean的時候,Bean的定義資訊是和實現分離的,而採用註解的方式可以把兩者合為一體,Bean的定義資訊直接以註解的形式定義在實現類中,從而達到了零配置的目的
控制反轉是一種通過描述(XML或者註解)並通過第三方去生產獲取特定物件的方式,在Spring中實現控制反轉的是IOC容器,其實現方法是依賴注入(DependencyInjection,DI)
3、HelloSpring
導包
創建Hello類
編寫配置檔案applicationContext.xml
<bean id="hello" class="com.system.pojo.Hello">
<property name="id" value="123"/>
</bean>
測試
思考問題?
Hello物件是誰創建的?
Hello物件是由Spring創建的
Hello物件的屬性是怎麼設定的?
Hello物件的屬性是由Spring容器設定的
這個過程就叫控制反轉;
控制:誰來控制物件的創建,傳統應用程式的物件是由程式本身控制創建的,使用Spring後,物件是由Spring來創建的
反轉:程式本身不創建物件,而變成被動的接受物件
依賴注入:就是利用set方法來進行注入的
IOC是一種程式設計思想,由主動的程式設計變成被動的接受
可以通過newClassPathXmlApplicationContext去瀏覽一下底層程式碼
到了現在,我們要實現不同的操作,只需要在Xml配置檔案中進行修改,所謂的IOC,就是物件由Spring來創建,管理,裝配
4、IOC創建物件的方式
使用構造器注入
預設使用無參構造創建物件<bean id="user" class="com.system.pojo.User">
</bean>
可以使用有參構造創建物件1.下標賦值
2.通過類型創建,不建議使用
3.直接通過參數名來設定
注意:在配置檔案載入的時候,容器中管理的物件就已經創建了
5、Spring配置
5.1、別名
5.2、Bean的配置
id: bean的唯一標識符class: bean物件對應的全限定名:包名+類名name: 別名,可以同時取多個名<bean id="user" class="com.system.pojo.User" name="user2">
</bean>
5.3、import
一般用於團隊開發,可以將多個配置檔案匯入合併成一個
<import resource="bean1.xml"/>
<import resource="bean2.xml"/>
6、依賴注入
6.1、構造器注入
前面已經說過
6.2、Set方式注入【重點】
依賴注入:set注入依賴:bean物件的創建依賴於容器注入:bean隨想中的所有屬性,由容器來注入環境搭建
複雜類型
2.真實測試物件
3.applicationContext.xml
4.測試類
6.3、拓展方式注入
可以使用p名稱空間和c名稱空間進行注入
配置檔案
<bean id="address" class="com.system.pojo.Address" p:pro="北京" p:city="亦莊"/>
<bean id="address" class="com.system.pojo.Address" c:_0="北京" c:_1="朝陽"/>
6.4、Bean的作用域
1.單例模式:Spring預設機制
<bean id="address" class="com.system.pojo.Address" scope="singleton">
</bean>
2.原型模式:每次從容器中獲取物件的時候,都會產生一個新物件
<bean id="address" class="com.system.pojo.Address" scope="prototype">
<property name="city" value="大興"/>
<property name="pro" value="北京"/>
</bean>
3.其餘request,session,application這些只能在web開發中使用到
7、Bean的自動裝配
自動裝配是Spring滿足bean依賴一種方式
Spring會在上下文中自動尋找,並自動給bean裝配屬性
在Spring中有三種裝配的方式
1.在xml中顯示的配置
2.在Java中顯示配置
3.隱式的自動裝配bean(重要)
好啦,今天的文章就到這裡了,希望能夠幫助到螢幕前迷茫的你們
相關文章
Hello,今天給各位童鞋們分享的是Spring,趕緊拿出小本子記下來吧1、spring1.1、簡介spring:給軟體行業帶來了春天2002年首次推出了Spring框架的雛形: interface21框架spring框架
2021-06-26 17:41:41
作為蘋果的忠實粉絲,對於該公司的每一款新品筆者都非常在意。無論是近期被傳得沸沸揚揚的蘋果汽車,還是早就成為「公開的祕密」的蘋果VR眼鏡。雖然這麼多年來,蘋果公司一直沒有
2021-06-26 17:40:16
6 月 25 日訊息 ,索尼 Xperia 1 III / 5 III 兩款旗艦手機於 2021 年 4 月釋出,均搭載高通驍龍 888 SoC 方案,配備 4500mAh 電池。其中 Xperia 1 III 搭載 4K 解析度 120Hz OLE
2021-06-26 17:19:48
Win7系統經常檢視影象與Windows照片檢視器,但最近一些小合作伙伴在檢視圖片時出現「Windows照片檢視器無法開啟此影象」,如果我遇到這個問題,我該怎麼辦?讓我們來看看小編的解決
2021-06-26 17:19:32
Apple Watch 大陸心電圖據最新訊息表示,蘋果在多年申請稽核之下,終於通過了中國大陸的 ECG 心電圖功能器械稽核!老使用者都知道,早在多年前蘋果推出的 Apple Watch 4 上就有全新
2021-06-26 17:19:16
使用計算機時,我經常遇到一些小問題,如何開啟一個通道音訊?單聲道音訊是指僅具有一個通道的訊號。單聲道音訊有時會在收聽歌曲時使用。那麼Win10電腦如何開啟單聲道音訊?接下來,
2021-06-26 17:18:50