观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

spring入門到精通(springboot入門菜鳥教程)

  • 生活
  • 2023-04-25 13:18
多條廣告如下腳本只需引入一次

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

第一章:認(rèn)識Spring

Spring認(rèn)識框架

spring全家桶:spring,springmvc,springboot,springcloud

spring:出現(xiàn)在2002左右,解決企業(yè)開發(fā)的難度,減輕對項目模塊之間的管理。

類和類之間的管理,幫助開發(fā)人員創(chuàng)建對象,管理對象之間的關(guān)系。

spring核心技術(shù)ioc,aop。能實現(xiàn)模塊之間,類之間的解耦合。

依賴:classa中使用clas***的屬性或者***,叫做classa依賴clas***。

Spring框架內(nèi)部模塊

第二章IoC控制反轉(zhuǎn)

IoC概念

框架怎么學(xué):框架是一個軟件,是其它人寫好的軟件。知道框架能干啥,具體的使用步要就行。

1)知道框架能做什么,mybatis–訪問數(shù)據(jù)庫,對表中的數(shù)據(jù)執(zhí)行增刪改查。

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

3)框架的內(nèi)部實現(xiàn),框架內(nèi)部怎么做,原理是什么。

4)通過學(xué)習(xí),可以實現(xiàn)一個框架。

spring的第一個核心功能ioc

IOC(InversionofControl):控制反轉(zhuǎn),是一個理論,概念,思想。

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

控制:創(chuàng)建對象,對象的屬性賦值,對象之間的關(guān)系管理。

反轉(zhuǎn):把原來的開發(fā)人員管理,創(chuàng)建對象的權(quán)限轉(zhuǎn)移給代碼之外的容器實現(xiàn)。由容器代替開發(fā)人員管理對象。創(chuàng)建對象,給屬性賦值。正轉(zhuǎn):由開發(fā)人員在代碼中,使用new構(gòu)造***創(chuàng)建對象,開發(fā)人員主動管理對象。

publicstaticvoidmain(stringargs[]){studentstudent–newStudent();//在代碼中,創(chuàng)建對象。–正轉(zhuǎn)。

}

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

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

創(chuàng)建對象的方式

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

java中創(chuàng)建對象有哪些方式:

1.構(gòu)造***,newstudent()

2.反射

3.序列化

4.克隆

5.ioc。容器創(chuàng)建對象

6.動態(tài)代理,利用反射機(jī)制在運行時創(chuàng)建代理類。

IoC的實現(xiàn)技術(shù)

ioc的體現(xiàn):servlet

1.創(chuàng)建類繼承HttpServelt2.web.xml注冊servlet,使用<servlet-name>myservlet</servlet-name><servelt-class>com.bjpwernode.controller.MyServlet1</servlet-class>3.沒有創(chuàng)建Servlet對象,沒有MyServletmyservlet=newMyServlet()4.Servlet是Tomcat服務(wù)器它能你創(chuàng)建的。Tomcat也稱為容器。Tomcat作為容器:里面存放的有Servlet對象,Listener,F(xiàn)ilter對象IoC的技術(shù)實現(xiàn)

DT是inc的技術(shù)實現(xiàn)

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

賦值,查找都由容器內(nèi)部實現(xiàn)。

spring是使用的di實現(xiàn)了ioc的功能,spring底層創(chuàng)建對象,使用的是反射機(jī)制。

第一個例子創(chuàng)建對象

創(chuàng)建spring配置文件

創(chuàng)建容器對象ApplicaitonContext【拿到spring創(chuàng)建的對象】

spring創(chuàng)建對象的時機(jī)

獲取容器中對象信息的api

創(chuàng)建非自定義對象

設(shè)值注入概念【注入就是賦值】

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

di:依賴注入,表示創(chuàng)建對象,給屬性賦值。

di的實現(xiàn)有兩種:

1.在spring的配置文件中,使用標(biāo)簽和屬性完成,叫做基于XML的di實現(xiàn)。

2.使用spring中的注解,完成屬性賦值,叫做基于注解的id實現(xiàn)。

di的語法分類:

1.set注入(設(shè)置注入):spring調(diào)用類的set***,在set***可以實現(xiàn)屬性的賦值。

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

2.構(gòu)造注入,spring調(diào)用類的有參數(shù)構(gòu)造***,創(chuàng)建對象。在構(gòu)造***中完成賦值。

簡單類型的設(shè)值注入實現(xiàn)

單元測試junit

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

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

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

使用單元測試

1.需要加入junit依賴。

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId><version>4.11</version>

<scope>test</scope>

</dependency>

2.創(chuàng)建測試作用的類:叫做測試類

src/test/java目錄中創(chuàng)建類

3.創(chuàng)建測試***

1)public玩法

2)沒有返回值void

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

4)***沒有參數(shù)

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

設(shè)值注入【set注入】的注意事項

設(shè)值注入只是使用set***

xml文件規(guī)定,所有的屬性必須放在引號中,int類型的數(shù)據(jù)也一樣。

設(shè)值注入也可以給別人寫的類進(jìn)行賦值,只要有對用的set***就行。

引用類型的設(shè)值注入

構(gòu)造注入

構(gòu)造注入是指,在構(gòu)造調(diào)用者實例的同時,完成被調(diào)用者的實例化。即使用構(gòu)造器設(shè)置依賴關(guān)系。

還可以省略index。

構(gòu)造注入創(chuàng)建文件對象

復(fù)習(xí)第一天內(nèi)容【思維導(dǎo)圖】

IoC作業(yè)

自動注入byName

簡化對于引用類型的重復(fù)賦值,減少冗余。

自動注入byType

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

同源就是一類的意思:

1.java類中引用類型的數(shù)據(jù)類型和bean的class的值是樣的。

2.java類中引用類型的數(shù)據(jù)類型和bean的class的值父子類關(guān)系的。

3.java類中引用類型的數(shù)據(jù)類型和bean的class的值接口和實現(xiàn)類關(guān)系的

語法:

<beanid=”xx”class=”yyy”autowire=“byType”>

簡單類型屬性賦值

</bean>

為什么使用多配置文件

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

多個配置優(yōu)勢

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

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

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

學(xué)生考勤模塊一個配置文件,張三

學(xué)生成績一個配置文件,李四

多文件的分配方式:

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

2.按類的功能,數(shù)據(jù)庫相關(guān)的配置一個文件配置文件,做事務(wù)的功能一個配置文件,做service功能的一個配置文件等。

包含關(guān)系的配置文件

注解的使用步驟

基于注解的di:通過注解完成java對象創(chuàng)建,屬性賦值。

使用注解的步驟:

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

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

3.在spring的配置文件中,加入一個組件掃描器的標(biāo)簽,說明注解在你的項目中的位置。

學(xué)習(xí)的注解:

1.@Component

2.@Respotory

3.@service

4.@Controller

5.@value

6.@Autowired

7.@Resource

Component注解使用

組件掃描器

多注解項目分層

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

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

spring中和@Component功能一致,創(chuàng)建對象的注解還有:

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

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

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

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

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

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

掃描多個包的***

簡單類型屬性賦值

引用類型屬性賦值A(chǔ)utoWired自動注入,使用byType

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

引用類型屬性賦值A(chǔ)utoWired自動注入,使用byName

比較

引用類型AutoWired的required屬性

引用類型

@Autowired:spring框架提供的注解,實現(xiàn)引用類型的賦值。

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

@Autowired:默認(rèn)使用的是byType自動注入。

屬性:required,是一個boolean類型的,默認(rèn)true。

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

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

引用類型AutoWired的required屬性推薦使用默認(rèn)值true

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

引用類型Resource

Resource是來自于JDK中的注解,不是來自于spring的。

引用類型

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

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

2.在set***的上面

//默認(rèn)是byNamel

@Resource

xml配置文件和注解的對比

經(jīng)常改的就是使用xml配置文件、不經(jīng)常改的就使用注解。

注解為主,配置文件為輔

復(fù)習(xí)【控制反轉(zhuǎn)】

復(fù)習(xí)動態(tài)代理的實現(xiàn)方式

使用動態(tài)代理的目的是在不改變原先類的基礎(chǔ)上,對其進(jìn)行功能增強(qiáng)。

JDK動態(tài)代理

動態(tài)代理的實現(xiàn)方式常用的有兩種:使用JDK的Proxy,與通過CGLIB生成代理。Jdk的動態(tài)要求目標(biāo)對象必須實現(xiàn)接口,這是java設(shè)計上的要求。

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

CGLIB動態(tài)代理(了解)

CGLIB的要求更低

CGLIB(CodeGenerationLibrary)是一個開源項目。是一個強(qiáng)大的,高性能,高質(zhì)量的Code生成類庫,它可以在運行期擴(kuò)展Java類與實現(xiàn)Java接口。它廣泛地被許多AOP的框架使用,例如SpringAOP。

使用JDK的Proxy實現(xiàn)代理,要求目標(biāo)類與代理類實現(xiàn)相同的接口。若目標(biāo)類不存在接口,則無法使用該方式實現(xiàn)。但對于無接口的類,要為其創(chuàng)建動態(tài)代理,就要使用CGLIB來實現(xiàn)。.

CGLIB代理的生成原理是生成目標(biāo)類的子類,而子類是增強(qiáng)過的,這個子類對象就是代理對象。所以,使用CGLIB生成動態(tài)代理,要求目標(biāo)類必須能夠被繼承,即不能是final的類。

CGLIB經(jīng)常被應(yīng)用在框架中,例如Spring,Hibernate等。cglib的代理效率高于Jdk。項目中直接使用動態(tài)代理的地方不多。一般都使用框架提供的功能。

用注解實現(xiàn)Ioc作業(yè)

1、加入依賴

2、創(chuàng)建類,在類中加入注解

3、聲名組件掃描器

使用動態(tài)代理實現(xiàn)一個功能增強(qiáng)

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

猜你喜歡

主站蜘蛛池模板: 鲁丝片一区二区三区免费 | 国产精品外围在线观看 | 国产精品久久久久一区二区 | 玖草在线视频 | 国产欧美日韩综合精品一区二区三区 | 亚洲美色综合天天久久综合精品 | 在线日本视频 | aaa免费毛片| 模特三级在线观看 | 成人在线视频免费 | 一区三区三区不卡 | 亚洲高清中文字幕一区二区三区 | 亚洲成av人片在线观看无码 | 好吊妞998视频免费观看在线 | 三级黄色片网站 | 欧美日韩精品免费一区二区三区 | 中文字幕日韩一区二区不卡 | 香港aa三级久久三级老师 | 国内精自线一二区 | 日本激情视频在线观看 | 不卡的毛片 | 三级视频在线播放线观看 | 亚洲国产精品第一区二区三区 | 欧美一线免费http | 中文字幕日韩精品有码视频 | 狼人 成人 综合 亚洲 | 欧美在线一区二区 | 日本欧美中文 | 久久精品成人免费网站 | 久久精品国产免费看久久精品 | 亚洲欧美手机在线观看 | 一本色道久久综合亚洲精品 | 国产午夜精品久久理论片小说 | 国产91久久久久久久免费 | 一区二区中文字幕亚洲精品 | 91热久久免费频精品黑人99 | 高清毛片免费看 | 欧美xxxwww| 国产20页| 色偷偷亚洲男人天堂 | 亚洲国产日韩综合久久精品 |