springboot入門菜鳥教程「spring入門到精通」

今日分享開始啦,請大家多多指教~

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

第一章:認識Spring

Spring認識框架

spring全家桶: spring ,springmvc,spring boot,spring cloud

spring:出現在2002左右,解決企業開發的難度,減輕對項目模塊之間的管理。

類和類之間的管理,幫助開發人員創建對象,管理對象之間的關係。

spring核心技術ioc ,aop 。能實現模塊之間,類之間的解耦合。

依賴: classa中使用classb的屬性或者方法,叫做classa依賴classb。

Spring框架內部模塊

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

第二章 IoC控制反轉

IoC概念

框架怎麼學:框架是一個軟件,是其它人寫好的軟件。知道框架能幹啥, 具體的使用步要就行。

1)知道框架能做什麼,mybatis–訪問數據庫, 對表中的數據執行增刪改查。

2)框架的語法,框架要完成一個功能,需要一定的步驟支持的。

3)框架的內部實現,框架內部怎麼做,原理是什麼。

4)通過學習,可以實現一個框架。

spring的第一個核心功能ioc

IOC (Inversion of Control) :控制反轉,是一個理論,概念,思想。

描述的:把對象的創建,賦值,管理工作都交給代碼之外的容器實現,也就是對象的創建是有其它外部資源完成。

控制:創建對象,對象的屬性賦值,對象之間的關係管理。

反轉:把原來的開發人員管理,創建對象的權限轉移給代碼之外的容器實現。由容器代替開發人員管理對象。創建對象,給屬性賦值。
正轉:由開發人員在代碼中,使用new構造方法創建對象,開發人員主動管理對象。

public static void main(string args[]){
student student – new Student();//在代碼中, 創建對象。–正轉。

}

容器:是一個服務器軟件,一 個框架(spring)

為什麼要使用ioc :目的就是減少對代碼的改動,也能實現不同的功能。實現解耦合。

創建對象的方式

為什麼要使用ioc :目的就是減少對代碼的改動,也能實現不同的功能。實現解耦合。

java中創建對象有哪些方式:

1.構造方法,new student ( )

2.反射

3.序列化

4.克隆

5.ioc。容器創建對象

6.動態代理,利用反射機制在運行時創建代理類。

IoC的實現技術

ioc的體現:
servlet

1.創建類繼承HttpServelt
2.web.xml 註冊 servlet ,使用<servlet-name> myservlet </ servlet-name>
<servelt-class>com.
bjpwernode.controller.MyServlet1</servlet-class>
3.沒有創建Servlet對象,沒有 MyServlet myservlet = new MyServlet ()
4. Servlet是Tomcat服務器它能你創建的。Tomcat也稱為容器。
Tomcat作為容器:裡面存放的有Servlet對象,Listener ,Fil ter對象
IoC的技術實現

DT是inc的技術實現

DI ( Dependency Injection) : 依賴注入,只需要在程序中提供要使用的對象名稱就可以,至

賦值,查找都由容器內部實現。

spring是使用的di實現了ioc的功能,spring底層創建對象,使用的是反射機制。

第一個例子創建對象

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

創建spring配置文件

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

創建容器對象ApplicaitonContext【拿到spring創建的對象】

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

spring創建對象的時機

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

獲取容器中對象信息的api

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

創建非自定義對象

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

設值注入概念【注入就是賦值】

ch02-di-xml:在spring的配置文件中,給java對象的屬性賦值。

di:依賴注入,表示創建對象,給屬性賦值。

di的實現有兩種:

1.在spring的配置文件中,使用標籤和屬性完成,叫做基於XML的di實現。

2.使用spring中的註解,完成屬性賦值,叫做基於註解的id實現。

di的語法分類:

1. set注入(設置注入) : spring調用類的set方法,在set方法可以實現屬性的賦值。

80左右都是使用的set注入。

2.構造注入,spring調用類的有參數構造方法,創建對象。在構造方法中完成賦值。

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

簡單類型的設值注入實現

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

單元測試junit

就是因為在main文件中測試不方便,不能獨立測試每一個方法,所以提出單元測試。

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

junit :單元測試,一個工具類庫,做測試方法使用的。

單元:指定的是方法,一個類中有很多方法,一個方法稱為單元。

使用單元測試

1.需要加入junit依賴。

<dependency>

<groupId>junit</groupId>

<arti factId> junit </arti factId><version>4.11</version>

<scope>test</ scope>

</ dependency>

2.創建測試作用的類:叫做測試類

src/ test/java目錄中創建類

3.創建測試方法

1) public玩法

2)沒有返回值void

3)方法名稱自定義,建議名稱是test +你要測試萬法名稱

4)方法沒有參數

5)方法的上面加入@Test,這樣的方法是可以單獨執行的。不用使用main方法。

設值注入【set注入】的注意事項

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

設值注入只是使用set方法

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

xml文件規定,所有的屬性必須放在引號中,int類型的數據也一樣。

設值注入也可以給別人寫的類進行賦值,只要有對用的set方法就行。

引用類型的設值注入

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

構造注入

構造注入是指,在構造調用者實例的同時,完成被調用者的實例化。即使用構造器設置依賴關係。

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

還可以省略index。

構造注入創建文件對象

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

複習第一天內容【思維導圖】

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

IoC作業

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

自動注入byName

簡化對於引用類型的重複賦值,減少冗餘。

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

自動注入byType

2. byType(按類型注入) : java類中引用類型的數據類型和spring容器中(配置文件) <bean>的class是同源關係的,這樣的bean能夠賦值給引用類型。

同源就是一類的意思:

1.java類中引用類型的數據類型和bean的class的值是樣的。

2.java類中引用類型的數據類型和bean的class的值父子類關係的。

3.java類中引用類型的數據類型和bean的class的值接口和實現類關係的

語法:

<bean id=”xx” class=”yyy” autowire= “byType”>

簡單類型屬性賦值

</bean>

為什麼使用多配置文件

大型項目中,需要多個配置文件。

多個配置優勢

1.每個文件的大小比一個文件要小很多,效率高。

2.避免多入競爭帶來的衝突。

如果你的項目有多個模塊(相關的功能在一起),一個模塊一個配置文件。

學生考勤模塊一個配置文件,張三

學生成績一個配置文件,李四

多文件的分配方式:

1.按功能模塊,一個模塊一個配置文件

2.按類的功能,數據庫相關的配置一個文件配置文件,做事務的功能一個配置文件,做service功能的一個配置文件等。

包含關係的配置文件

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

註解的使用步驟

基於註解的di:通過註解完成java對象創建,屬性賦值。

使用註解的步驟:

1.加入maven的依賴spring-context ,在你加入spring- context的同時,間接加入spring- aop的依賴,使用註解必須使用spring-aop依賴。

2.在類中加入spring的註解(多個不同功能的註解)

3.在spring的配置文件中,加入一個組件掃描器的標籤,說明註解在你的項目中的位置。

學習的註解:

1.@Component

2.@Respotory

3.@service

4.@Controller

5.@value

6.@Autowired

7.@Resource

Component註解使用

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

組件掃描器

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

多註解項目分層

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

@Component(value = “myStudent “)等同於

<bean id= “myStudent” class=”com.bjpowernode.ba01.Student” />

spring中和@Component功能一致,創建對象的註解還有:

1. @Repository (用在持久層類的上面) :放在da的實現類上面,表示創建dao對象,dao對象是能訪問數據庫的。

2.@Service(用在業務層類的上面) :放在service的實現類上面,創建service對象,service對象是做業務處理,可以有事務等功能的。

3. @Controller(用在控制器的上面) :放在控制器(處理器)類的上面,創建控制器對象的,控制器對象,能夠接受用戶提交的參數,顯示請求的處理結果。

以上三個註解的使用語法和@Component 一樣的。都能創建對象,但是這三個註解還有額外的功能。

@Repository,@service , @Controller 是給項目的對象分層的。

不清楚要用上面三個註解的情況就用@Component。

掃描多個包的方法

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

簡單類型屬性賦值

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

引用類型屬性賦值AutoWired自動注入,使用byType

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

步驟:首先掃描配置文件ApplicaitonContext,使用組件掃描器掃描base-package,創建包中所有對象,根據其中的註解注入【賦值】。

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

引用類型屬性賦值AutoWired自動注入,使用byName

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

比較

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

引用類型AutoWired的required屬性

引用類型

@Autowired:spring 框架提供的註解,實現引用類型的賦值。

spring中通過註解給引用類型賦值,使用的是自動注入原理, 支持byName, byType。

@Autowired:默認使用的是byType自動注入。

屬性:required,是 一個boolean類型的,默認true。

required=true :表示引用類型賦值失敗,程序報錯,並終止執行。

required=false :引用類型如果賦值失敗,程序正常執行,引用類型是null。

引用類型AutoWired的required屬性推薦使用默認值true

使用true, 儘早解決程序中的問題,報錯。

引用類型Resource

Resource是來自於JDK中的註解,不是來自於spring的。

引用類型

@Resource:來自jdk中的註解,spring框架提供J對這個註解的功能支持,可以使用它給引用類型賦值。使用的也是自動注入原理,支持byName ,byType ,默認是byName。

位置: 1. 在屬性定義的上面,無需set方法,推薦使用。

2.在set方法的上面

//默認是byNamel

@Resource

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

xml配置文件和註解的對比

經常改的就是使用xml配置文件、不經常改的就使用註解。

註解為主,配置文件為輔

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

複習【控制反轉】

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

複習動態代理的實現方式

使用動態代理的目的是在不改變原先類的基礎上,對其進行功能增強。

JDK 動態代理

動態代理的實現方式常用的有兩種:使用JDK的Proxy,與通過CGLIB生成代理。Jdk的動態要求目標對象必須實現接口,這是java設計上的要求。

從jdk1.3以來,java 語言通過java.lang.reflect 包提供三個類支持代理模式Proxy,Method 和InovcationHandler。

CGLIB動態代理(了解)

CGLIB的要求更低

CGLIB(Code Generation Library)是一個開源項目。是一個強大的,高性能,高質量的Code生成類庫,它可以在運行期擴展Java 類與實現Java接口。它廣泛地被許多AOP的框架使用,例如Spring AOP。

使用JDK 的Proxy 實現代理,要求目標類與代理類實現相同的接口。若目標類不存在接口,則無法使用該方式實現。但對於無接口的類,要為其創建動態代理,就要使用CGLIB來實現。.

CGLIB代理的生成原理是生成目標類的子類,而子類是增強過的,這個子類對象就是代理對象。所以,使用CGLIB生成動態代理,要求目標類必須能夠被繼承,即不能是final 的類。

CGLIB經常被應用在框架中,例如Spring ,Hibernate等。cglib 的代理效率高於Jdk。項目中直接使用動態代理的地方不多。一般都使用框架提供的功能。

用註解實現Ioc作業

1、加入依賴

2、創建類,在類中加入註解

3、聲名組件掃描器

使用動態代理實現一個功能增強

一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學
一文帶你學習Spring框架從入門到精通,通向架構師道路的必經之學

今日份分享已結束,請大家多多包涵和指點!

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/205539.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-07 17:47
下一篇 2024-12-07 17:47

相關推薦

發表回復

登錄後才能評論