![springboot基礎學習目標_第1頁](http://file4.renrendoc.com/view10/M01/23/2E/wKhkGWV5jV2Ae8r1AAJfZQwuk28223.jpg)
![springboot基礎學習目標_第2頁](http://file4.renrendoc.com/view10/M01/23/2E/wKhkGWV5jV2Ae8r1AAJfZQwuk282232.jpg)
![springboot基礎學習目標_第3頁](http://file4.renrendoc.com/view10/M01/23/2E/wKhkGWV5jV2Ae8r1AAJfZQwuk282233.jpg)
![springboot基礎學習目標_第4頁](http://file4.renrendoc.com/view10/M01/23/2E/wKhkGWV5jV2Ae8r1AAJfZQwuk282234.jpg)
![springboot基礎學習目標_第5頁](http://file4.renrendoc.com/view10/M01/23/2E/wKhkGWV5jV2Ae8r1AAJfZQwuk282235.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
學習目標能夠理解Spring的優(yōu)缺學習目標能夠理解Spring的優(yōu)缺能夠理解SpringBoot的特能夠理解SpringBoot的核心功能夠搭建SpringBoot的環(huán)能夠完成perties配置文件的配能夠完成application.yml配置文件的配能夠使用SpringBoot集成能夠使用SpringBoot集成能夠使用SpringBoot集成SpringData1.1原有Spring優(yōu)缺點分Spring是Java企業(yè)版(JavaEnterprisedton,,也稱J2EE)的輕量級代替品。無需開發(fā)重量級的Enterprisevn(E),pn的Java對象(PlainOldJavabt,P)實現(xiàn)了EJB的功能。置。Spring2.5引入了基于注解的組件掃描,這消除了大量針對應用程序自身組件的顯式XML配置。Spring3.0引入所有這些配置都代表了開發(fā)時的損耗。因為在思考pn特性配置和解決業(yè)務問題之間需要進行思維切換,所以編寫配置擠占了編寫應用程序邏輯的時間。和所有框架一樣,pn實用,但與此同時它要求的回報也不少。除此之外,項目的依賴管理也是一件耗時耗力的事情。在環(huán)境搭建時,需要分析要導入哪些庫的坐標,而且還需要分析導入與之有依賴關系的其他庫的坐標,一旦選錯了依賴的版本,隨之而來的不兼容問題就會嚴重阻礙項目的開發(fā)進度。1.2SpringBoot的概1.2.1SpringBoot解決上述Springpnoot對上述png的缺點進行的改善和優(yōu)化,基于約定優(yōu)于配置的思想,可以讓開發(fā)人員不必在配置與邏輯業(yè)務之間進行思維的切換,全身心的投入到邏輯業(yè)務的代碼編寫中,從而大大提高了開發(fā)的效率,一定程度上縮短了項目周期。為基于Spring的開發(fā)提供更快的入門為基于Spring的開發(fā)提供更快的入門體開箱即用,沒有代碼生成,也無需XML配置。同時也可以修改默認值來滿足特定的需提供了一些大型項目中常見的非功能性特性,如嵌入式服務器、安全、指標,健康檢測、外部配置SpringBoot不是對Spring功能上的增強,而是提供了一種快速使用Spring的方起步依起步依賴本質上是一個Mvn項目對象模型(PotbtMod,PM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。注意:起步依賴和自動配置的原理剖析會在第三章《SpringBoot原理分析》進行詳細講二、SpringBoot快速入2.1代碼實 使用idea工具創(chuàng)建一個maven工程,該工程為普通的java工程即2.1.2添加SpringBootSpringBoot2.1.2添加SpringBootSpringBoot要求,項目要繼承SpringBoot的起步依賴spring-boot-starter-SpringBoot要集成SpringMVC進行Controller的開發(fā),所以項目要導入web的啟動依2.1.3編寫SpringBoot要通過SpringBoot2.1.3編寫SpringBoot要通過SpringBoot提供的引導類起步SpringBoot才可以進行訪2.1.4編寫在引導類MySpringBootApplication同級包或者子級包中創(chuàng)建2.1.5 packagecom.itheima.controller; publicclass{publicStringreturn"springboot訪問成功!";14} packagecom.itheima; publicclass{ publicstaticvoidmain(String[]args) 執(zhí)行SpringBoot起步類的主方法,控制臺打印日通過日志發(fā)現(xiàn),Tomcatstarted執(zhí)行SpringBoot起步類的主方法,控制臺打印日通過日志發(fā)現(xiàn),Tomcatstartedonport(s8080http)withcontextpathtomcat已經(jīng)起步,端口監(jiān)聽8080,web打開瀏覽器訪問url2.2快速入門解2.2.2SpringBoot:標注t的啟動類,該注解具備多種功能(后面詳細剖析)SpringApplication.run(MySpringBootApplication.class)代表運行SpringBoot的啟動類,參數(shù)為SpringBoot啟動類的字節(jié)碼對象2.2.3SpringBoot __ /\\/'___(_)__\\\ (()\|'_|'_||'_\/_`|\\\ \\/)||_)|||||||(_||))) '| |.|_||_|_||_\,|//// =========|_|==============|/=/_/_/_/ ::SpringBoot:: 2018-05-08 INFO5672--- :StartingMySpringBootApplicationonDESKTOP-RRUNFUHwithPID5672 muzimooinC:\Users\muzimoo\IdeaProjects\IdeaTest) ...... :MappedURLpath[/**]ontohandleroftype 2018-05-08 INFO5672--- :RegisteringbeansforJMXexposureon 2018-05-08 INFO5672--- :Tomcatstartedonport(s):8080(http)withcontextpath'' 2018-05-08 INFO5672--- :StartedMySpringBootApplicationin4.252seconds(JVMrunningfor5.583)我們在開發(fā)中反復修改類、頁面等資源,每次修改后都是需要重新啟動才生效,這樣每次啟動都很麻煩,浪費了大量的時間,我們可以在修改代碼后不重啟就能生效,在pox我們在開發(fā)中反復修改類、頁面等資源,每次修改后都是需要重新啟動才生效,這樣每次啟動都很麻煩,浪費了大量的時間,我們可以在修改代碼后不重啟就能生效,在poxl中添加如下配置就可以實現(xiàn)這樣的功能,我們稱之為熱部署。注意:IDEA進行SpringBoot熱部署出現(xiàn)這種情況,并不是熱部署配置問題,其根本原因是因為IntellijIEDA默認情況下不會自動編譯,需要對IDEA進然后Shift+Ctrl+Alt+/,選擇 通過idea快速創(chuàng)建的SpringBoot項目的pom.xml中已經(jīng)導通過idea快速創(chuàng)建的SpringBoot項目的pom.xml中已經(jīng)導入了我們選擇的web的起步依賴的坐12<?xmlversion="1.0"encoding="UTF-<projectxmlns="/POM/4.0.0"3456789<description>DemoprojectforSpring<relativePath/><!--lookupparentfrom--可以使用快速入門的方式創(chuàng)建Controller進行訪問,此處不再贅三、SpringBoot原可以使用快速入門的方式創(chuàng)建Controller進行訪問,此處不再贅三、SpringBoot原理分3.1起步依賴原理分 按住t點擊pox中的pnbootttpnt,跳轉到了pnbootttpnt的pox,x配置如下(只摘抄了部分重點配置):按住Ctrl點擊pom.xml中的spring-boot-starter-dependencies,跳轉到了spring-boot-starter-dependenciespom.xml,xml配置如下(只摘抄了部分重點配置123456789從上面的從上面的s的l中我們可以發(fā)現(xiàn),一部分坐標的版本、依賴管理、插件管理已經(jīng)定義好,所以我們的t工程繼承t后已經(jīng)具備版本鎖定等配置了。所以起步依賴的作用就是進行依賴的傳遞。 按住t點擊pox中的pnbootttb,跳轉到了pnbootttb的pox,x配置如下(只摘抄了部分重點配置):1<?xmlversion="1.0"encoding="UTF-2..................3453456789<name>SpringBootWeb從上面的pnboot從上面的pnbootttb的poxl中我們可以發(fā)現(xiàn),pnbootttb就是將b開發(fā)要使用的pnb、pnbvc等坐標進行了“打包”,這樣我們的工程只要引入pnbootttb起步依賴的坐標就可以進行b開發(fā)了,同樣體現(xiàn)了依賴傳遞的作用。3.2自動配置原理解按住Ctrl點擊查看啟動類MySpringBootApplication上的注解注解@SpringBootApplication的源其中@SpringBootCon?guration:等同與@Con?guration,既標注該類是Spring的一個配置@EnableAutoCon?guration:SpringBoot自動配置功能開@ComponentScan(excludeFilters=@Filter(type=FilterType.CUSTOM,classes= @Filter(type=FilterType.CUSTOM,classes=AutoConfigurationExcludeFilter.class)})public@interface{ *Excludespecificauto-configurationclassessuchthattheywillneverbe*@returntheclassesto @AliasFor(annotation=Class<?>[]exclude()default{}; ...... publicclassMySpringBootApplicationpublicstaticvoidmain(String[]args)SpringApplication.run(MySpringBootApplication.class);} 按住Ctrl點擊查看注按住Ctrl點擊查看注解其中按住Ctrl點擊查看AutoCon?gurationImportSelector源導入了AutoCon?gurationImportSelector其中,s方法的作用就是從文件中讀取指定類對應的類名稱列表 publicString[]selectImports(AnnotationMetadata{ ......List<String>configurations=configurations=Set<String>exclusions=getExclusions(annotationMetadata, configurations=filter(configurations, returnStringUtils.toStringArray(configurations);} AnnotationAttributesattributes)List<String>configurations= returnconfigurations; public@interface{8......... spring.factories文件中有關自動spring.factories文件中有關自動配置的配置信息如下上面配置文件存在大量的以Con?guration為結尾的類名稱,這些類就是存有自動配置信息SpringApplication在獲取這些類名后再加我們以ServletWebServerFactoryAutoCon?guration為例來分析源碼其中代表加載ServerProperties服務器配置屬性@ConditionalOnWebApplication(type= publicclass{11......... ......2 ......進入ServerProperties.class源碼如下其中進入ServerProperties.class源碼如下其中x="配置文件中的前綴,t開始的屬性映射到該類四、SpringBoot的配置文4.1SpringBoot配置文件類4.1.1SpringBootSpringBoot默認會從Resources目錄下加載perties或application.yml(application.yaml)文@ConfigurationProperties(prefix="server",ignoreUnknownFields=publicclass{ *ServerHTTP privateIntegerport; *Networkaddresstowhichtheservershould privateInetAddressaddress; ...... s文件的格式文件外,還可以使用文件進行配置,下面對文件進行講解。ML文件格式是ML(MLntMkupLnu)編寫的文件格式,ML是一種直觀的能夠被電腦識別的的數(shù)據(jù)數(shù)據(jù)序列化格式,并且容易被人類閱讀,容易和腳本語言交互的,可以被支持ML庫的不同的編程語言程序導入,比如:/,,Python,v,P,,PHP等。ML文件是以數(shù)據(jù)為核心的,比傳統(tǒng)的x方式更加簡潔。YML文件的擴展名可以使用.yml或者.yaml配置普通數(shù)key示例代碼注意:value之前有一個空.2配置對象數(shù)語法key:{key1:value1,key2:示例代碼注意:key1前面的空格個數(shù)不限定,在yml語法中,相同縮進代表同一個級.2配置Map數(shù)同上面的對象寫name:age:addr:beijing 7 person:{name:haohao,age:31,addr: name:配置數(shù)組(List、Set)數(shù)語法配置數(shù)組(List、Set)數(shù)語法或者key:示例代碼注意:value1與之間的-之間存在4.1.3SpringBoot上面提及過,pnoot的配置文件,主要的目的就是對配置信息進行修改的,但在配置時的y呢?我們可以查閱pnoot的官方文檔常用的配置摘抄如下1234#QUARTZSCHEDULERspring.quartz.jdbc.initialize-schema=embedded#Databaseschemainitializationmode.sql#PathtotheSQLfiletousetoinitializethedatabasespring.quartz.job-store-type=memory#Quartzjobstore----chongqing 8 -name:age:score:-name:age:score:-name:age:score:我們可以通過配置application.poperties或者application.yml來修改我們可以通過配置application.poperties或者application.yml來修改SpringBoot的默認配例如perties文application.yml文56789perties.*=#AdditionalQuartzScheduler##WEBPROPERTIES#EMBEDDEDSERVERCONFIGURATION(ServerProperties)server.port=8080#ServerHTTPport.server.servlet.context-path=#Contextpathoftheapplication.server.servlet.path=/#Pathofthemaindispatcherservlet.#HTTPencodingspring.http.encoding.charset=UTF-8#CharsetofHTTPrequestsandresponses.Addedtothe"Content-Type"headerifnotsetexplicitly.#JACKSONspring.jackson.date-format=#Dateformatstringorafully-qualifieddateformatclassname.Forinstance,`yyyy-MM-ddHH:mm:ss`.#SPRINGMVCspring.mvc.servlet.load-on-startup=-1#Loadonstartuppriorityofthedispatcherspring.mvc.static-path-pattern=/**#Pathpatternusedforstaticresources.spring.mvc.view.prefix=#SpringMVCviewprefix.spring.mvc.view.suffix=#SpringMVCview#DATASOURCE(DataSourceAutoConfiguration&DataSourceProperties)spring.datasource.driver-class-name=#FullyqualifiednameoftheJDBCdriver.Auto-detectedbasedontheURLbydefault.spring.datasource.password=#Loginpasswordofthedatabase.spring.datasource.url=#JDBCURLofthedatabase.spring.datasource.username=#Loginusernameofthedatabase.#JEST(ElasticsearchHTTPclient)(JestProperties)spring.elasticsearch.jest.password=#Loginpassword.xy.host=#ProxyhosttheHTTPclientshoulduse.xy.port=#ProxyporttheHTTPclientshoulduse.spring.elasticsearch.jest.read-timeout=3s#Readtimeout.spring.elasticsearch.jest.username=#Loginusername.4.2.1使用注解@Value我們可以通過@Vu注解將配置文件中的值映射到一個pn管理的n的字段上例如:perties配置如下或者,application.yml配置如下實體Bean代碼如下瀏覽器訪問地址:http://localhost:8080/quick結果如下publicclass{privateStringprivateIntegerage;9publicStringreturn"springboot訪問成功!name="+name+",age="+age;} name:age:name:age: port:context-path: 通過注解@on? 通過注解@on?utonPopt(p?x配置文件中的y的前綴)可以將配置文件中的配置自動與實體進行映射perties配置如下或者,application.yml配置如下實體Bean代碼如下@ConfigurationProperties(prefix=publicclass{privateStringprivateIntegerage;publicStringreturn"springboot訪問成功!name="+name+",age="+age;}publicvoidsetName(Stringname)=name;}publicvoidsetAge(Integerage)this.age=age;20}1 }name:age:name:age:瀏覽器訪問地址:http://localhost:8080/quick結果如下注意:使用@on?瀏覽器訪問地址:http://localhost:8080/quick結果如下注意:使用@on?utonPopt方式可以進行配置文件與實體字段的自動映射,但需要字段必須提供t方法才可以,而使用@Vu注解修飾的字段不需要提供t方法五、SpringBoot與整合其他技5.1SpringBoot整合 5.1.25.1.3在perties中添加數(shù)據(jù)量的連接信5.1.4創(chuàng)建user#DB<!--MySQL連接驅動在test數(shù)據(jù)庫中創(chuàng)建user5.1.5創(chuàng)建實體5.1.6編寫注意:在test數(shù)據(jù)庫中創(chuàng)建user5.1.5創(chuàng)建實體5.1.6編寫注意:@Mapper標記該類是一個mybatis的mapper接口,可以被 在src\main\resources\mapper路徑下加入UserMapper.xml配置文件boot自動掃描到spring上下文publicinterfaceUserMapperpublicList<User>queryUserList();4 publicclass 主privateLong//用戶privateString//密privateString//姓privateStringname; //此處省略getter和setter方法 1 --Tablestructurefor`user`DROPTABLEIFEXISTSCREATETABLE`user``id`int(11)NOTNULL`username`varchar(50)DEFAULT`password`varchar(50)DEFAULT`name`varchar(50)DEFAULTPRIMARYKEY)ENGINE=InnoDBAUTO_INCREMENT=10DEFAULTCHARSET=utf8; --RecordsofuserINSERTINTO`user`VALUES('1','zhangsan','123','張三INSERTINTO`user`VALUES('2','lisi','123','李四5.1.9編寫測試5.1.105.25.1.9編寫測試5.1.105.2SpringBoot整合J5.2.1添加Jtpublicclass{privateUserMapperuserMapper;publicList<User>List<User>users=returnusers;} <?xmlversion="1.0"encoding="utf-8"<!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"> <selectid="queryUserList"select*from5.2.2其中SpringRunner繼承自5.2.2其中SpringRunner繼承自pngntsRunn,使用哪一個Spring提供的測試測試引擎都可@SpringBootTest的屬性指定的是引導類的字節(jié)碼對5.2.3 publicfinalclassSpringRunnerextends packagecom.itheima.test; importimportimportimport importjava.util.List;@Spri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度供熱設備檢修與保養(yǎng)服務合同
- 2025年度人工智能教育平臺融資借款合同范本
- 2025年度環(huán)保項目借款合同(綠色金融支持)
- 2025年上海市室內環(huán)境質量保證合同(4篇)
- 2025年度新型城鎮(zhèn)化建設項目施工承包管理合同
- 2025年度房地產(chǎn)項目預售購銷合同關鍵要點
- 2025年度電商企業(yè)跨境支付系統(tǒng)采購合同
- 2025年度衛(wèi)星遙感數(shù)據(jù)服務合同
- 2025年度廣告創(chuàng)意與市場調研合同
- 2025年度國際醫(yī)療設備采購技術咨詢合同范本
- 公眾聚集場所消防技術標準要點
- 幼兒園員工手冊與規(guī)章制度
- 社團活動經(jīng)費預算申請表
- 經(jīng)營范圍登記規(guī)范表述目錄(試行)(V1.0.2版)
- 2023年山東省威海市中考物理真題(附答案詳解)
- 第八講 發(fā)展全過程人民民主PPT習概論2023優(yōu)化版教學課件
- 王崧舟:學習任務群與課堂教學變革 2022版新課程標準解讀解析資料 57
- 招投標現(xiàn)場項目經(jīng)理答辯(完整版)資料
- 運動競賽學課件
- 2022年上海市初中畢業(yè)數(shù)學課程終結性評價指南
- 高考作文備考-議論文對比論證 課件14張
評論
0/150
提交評論