1. 程式人生 > 其它 >Spring學習筆記1

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