Spring學習筆記1
前言:看了B站黑馬程式設計師,狂神說JAVA,個人覺得還是狂神講的更加細緻,現記錄自己的學習過程
一、Spring是一個框架,是為了讓現有的技術更加容易使用,本身就是一個大雜燴,整合了現有的技術框架。
優點:Spring是一個開源的免費的框架(容器)!
Spring是一個輕量級的,非入侵式的框架
控制反轉(IOC),面向切面程式設計(AOP)
支援事務的處理,對框架整合的支援
總結:Spring是一個輕量級的控制反轉(IOC)和麵向切面程式設計(AOP)的框架。
二、控制反轉:
控制:誰來控制物件的建立,傳統應用程式的物件是由程式本身控制建立的,使用Spring後,物件是由Spring來建立的。
反轉:程式本身不建立物件,而變成被動的接收物件
依賴注入:就是利用set方法來進行注入的。
IOC是一種變成思想,由主動的程式設計變成被動的接收。
Class A中用到了Class B的物件b,一般情況下,需要在A的程式碼中顯式的new一個B的物件。 採用依賴注入技術之後,A的程式碼只需要定義一個私有的B物件,不需要直接new來獲得這個物件,而是通過相關的容器控制程式來將B物件在外部new出來並注入到A類裡的引用中。而具體獲取的方法、物件被獲取時的狀態由配置檔案(如XML)來指定。 所謂的IOC,就是由Spring來建立,管理,裝配 Java語法:型別 變數名 new 型別();
Hello hello = new Hello();
現在只要在xml配置檔案中配置即可
id = 變數名
class = new的物件
property相當於給物件中的屬性設定一個值
<bean id ="hello" class="com.icecream.Hello">
<property name="str" value="Spring”>
</bean>
</beans>
三、IOC建立物件的方式
1.使用無參構造建立物件,預設方式
2.假設我們需要使用有參構造建立物件。
1.下標賦值
<bean id ="user" class="com.icecream.user"> <constructor-arg index="0" value="java學習"/></bean>
2.通過型別建立,但是不建議使用
<bean id ="user" class="com.icecream.user"> <constructor-arg type="java.lang.string" value="java學習1"/></bean>
3.通過引數名建立
<bean id ="user" class="com.icecream.user"> <constructor-arg name="name" value="java學習2"/></bean>
總結:在配置檔案載入的時候,容器中管理的物件就已經初始化了。
四、spring配置
1.別名:
alias=""即可
如
<alias name="user" alias="userNwe"/>
如果添加了別名,我們也可以使用別名來獲取到這個物件
2.
id:bean的唯一識別符號,也就是相當於我們之前java中學的物件名
class:bean物件所對應的全限定名,:包名+型別
name:也是別名
import,一般用於團隊開發使用,他可以將多個配置檔案,匯入合併為一個總的
<import resource ="bean.xml"/> <import resource ="bean2.xml"/> <import resource ="bean3.xml"/>
使用的時候使用總的配置就行了
五、依賴注入
1.構造器注入
2.Set 注入 (重點)
見:https://blog.csdn.net/qq_33369905/article/details/106647271?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165260651916781432989642%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165260651916781432989642&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-106647271-null-null.nonecase&utm_term=IOC&spm=1018.2226.3001.4450
參考文件:https://blog.csdn.net/qq_33369905/article/details/106647330?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165260651916781432989642%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165260651916781432989642&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-106647330-null-null.nonecase&utm_term=IOC&spm=1018.2226.3001.4450