成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

SpringBoot就是這么簡(jiǎn)單

whinc / 1448人閱讀

摘要:熱加載代表的是我們不需要重啟服務(wù)器,就能夠類(lèi)檢測(cè)得到,重新生成類(lèi)的字節(jié)碼文件無(wú)論是熱部署或者是熱加載都是基于類(lèi)加載器來(lái)完成的。驗(yàn)證階段字節(jié)碼文件不會(huì)對(duì)造成危害準(zhǔn)備階段是會(huì)賦初始值,并不是程序中的值。

一、SpringBoot入門(mén)

今天在慕課網(wǎng)中看見(jiàn)了Spring Boot這么一個(gè)教程,這個(gè)Spring Boot作為JavaWeb的學(xué)習(xí)者肯定至少會(huì)聽(tīng)過(guò),但我是不知道他是什么玩意。

只是大概了解過(guò)他是用起來(lái)很方便,不用什么配置的。于是我就花了點(diǎn)時(shí)間去跟著學(xué)習(xí)了。

視頻地址:http://www.imooc.com/learn/767

教程中的代碼:https://gitee.com/liaoshixiong/girl

1.1SpringBoot啟動(dòng)

在教程中,啟動(dòng)SpirngBoot有三種方式:

在idea中直接使用啟動(dòng)(最常用)

使用mvn 命令來(lái)啟動(dòng)

使用mvn編譯,而后在class目錄生成jar包,使用Java命令來(lái)啟動(dòng)

1.2項(xiàng)目屬性配置

使用SpringBoot作為我們的框架,連Tomcat都不用自己配置。Tomcat默認(rèn)的端口是8080。那如果我們要改端口的話,怎么改呢??項(xiàng)目中可能有一些屬性變量,那怎么配置呢???

SpringBoot是提供了application.properties這種配置文件供我們使用的。

但是,我們可以有更好的配置方式,使用yml文件,這種配置文件使用起來(lái)就更加簡(jiǎn)潔了。

在yml文件中配置屬性,那么我們?cè)贑ontroller中可以使用@value屬性來(lái)進(jìn)行獲取。

如果我們的配置屬性是有規(guī)律的(是分類(lèi)的),比如為System系統(tǒng)配置的屬性,我們可以創(chuàng)建一個(gè)Java類(lèi)來(lái)進(jìn)行管理。

那么在獲取的時(shí)候就不需要使用@value屬性來(lái)分別獲取了。直接獲取Java類(lèi)的成員變量就行了。

當(dāng)然了,這里涉及到了兩個(gè)注解:

@configurationProperties

@Component

再舉個(gè)例子,我們的生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境的配置變量很有可能是不一樣的,比如:我們的path變量在開(kāi)發(fā)環(huán)境中是:http://localhost:8080。而我們的生產(chǎn)環(huán)境中的path路徑是:zhognfucheng.site。這就造成了差異,在springBoot中,這種差異就很好解決了。

可以將開(kāi)發(fā)環(huán)境的配置文件和生產(chǎn)環(huán)境的配置文件分開(kāi),使用總配置文件指定使用的是哪個(gè)配置文件。

在使用java變量啟動(dòng)Springboot項(xiàng)目的時(shí)候,可以指定使用哪個(gè)配置文件。

二、回顧 2.1Controller的使用

SpringBoot已經(jīng)不推薦使用JSP了,推薦使用模版來(lái)返回頁(yè)面。thymeleaf這個(gè)模版,如果在返回頁(yè)面的時(shí)候出錯(cuò)了,看看是不是沒(méi)有使用模版。

@RestController = @Controller + @ResponseBody

2.2統(tǒng)一處理異常

統(tǒng)一處理異常我在Struts2、springMVC的時(shí)候都已經(jīng)接觸過(guò)了,方法都是類(lèi)似的。定義一個(gè)自己系統(tǒng)的異常,為了更好地排查出錯(cuò)誤所在。

而這個(gè)課程的統(tǒng)一處理異常我又學(xué)到了不少的東西:

我們?cè)贑ontroller一般返回的是JSON數(shù)據(jù)給前端頁(yè)面,如果出現(xiàn)了異常,你多帶帶拋出了異常,如果沒(méi)有做任何的處理,返回的JSON格式一定和成功的訪問(wèn)的是不一樣的,那么這就會(huì)造成前臺(tái)在解析的時(shí)候可能會(huì)有混亂。為了解決這種情況,我們可以多帶帶封裝一個(gè)類(lèi)來(lái)進(jìn)行返回,類(lèi)的成員變量:code,message,data。有了這個(gè)類(lèi),那么返回的JSON格式就是相同的了。

前邊說(shuō)到了返回類(lèi)的code,這個(gè)code最好就不要多帶帶寫(xiě)出來(lái)??梢允褂靡粋€(gè)枚舉來(lái)進(jìn)行維護(hù)。這樣的話就非常方便我們?nèi)ゲ僮髁恕?/p>

service拋出自定義異常、controller也拋出自定義異常。由Spring的異常處理器來(lái)進(jìn)行捕獲、對(duì)其進(jìn)行輸出、返回JSON給前臺(tái)頁(yè)面。

2.3AOP

SpringBoot環(huán)境下使用AOP,也是需要導(dǎo)入maven坐標(biāo)的。知識(shí)點(diǎn)都和spring學(xué)習(xí)的差不多...

使用日志記錄可以使用sl4jlog,這個(gè)是Spring自帶的。

在返回給瀏覽器前記錄返回的數(shù)據(jù):

三、知新 3.1 SpringData JPA

SpringData JPA直接倒是聽(tīng)過(guò),但是沒(méi)了解過(guò)。課程說(shuō)它就是一個(gè)標(biāo)準(zhǔn),能夠方便我們對(duì)數(shù)據(jù)庫(kù)的CURD。

也去網(wǎng)上看了些資料,它的默認(rèn)實(shí)現(xiàn)是Hibernate,因此,使用JPA,就相當(dāng)于使用Hibernate了。

我認(rèn)為它實(shí)際上就是封裝了Hibernate的API,另Hibernate的開(kāi)發(fā)又更加簡(jiǎn)單了。

創(chuàng)建一個(gè)接口,實(shí)現(xiàn)JPA所給出的接口,那么我們自己創(chuàng)建的接口就有了JPA也就是Hibernate的API了。

課程中使用的是RESTful風(fēng)格的API實(shí)現(xiàn)增刪改查:

3.2IDEA類(lèi)似與POSTMAN

視頻作者使用的是POSTMAN軟件來(lái)進(jìn)行對(duì)http請(qǐng)求的測(cè)試的,在評(píng)論留言說(shuō)IDEA也有這樣的功能:

idea  有個(gè)   rest client  可以代替postman   Tools  -> Test RESTful  web service

我也順利找到了..

既然是使用了RESTful的風(fēng)格,那么在Controller了就可以使用GetMapping、PutMapping、DeleteMapping這樣的注解了。

3.3單元測(cè)試

在service層做單元測(cè)試的和我之前學(xué)過(guò)的單元測(cè)試是一樣的,就是autowired一個(gè)service對(duì)象然后就測(cè)試方法就行了。

而測(cè)試Controller、在教程中也稱之為測(cè)試API,這就是我第一次接觸了。測(cè)試API其實(shí)就是模擬使用HTTP來(lái)進(jìn)行測(cè)試。

使用到了MOCK這么一個(gè)對(duì)象來(lái)幫我們進(jìn)行測(cè)試:

還有要注意的是:如果使用mvn來(lái)進(jìn)行打包的話,那么打包的時(shí)候會(huì)自動(dòng)幫我們進(jìn)行單元測(cè)試的。因此,我們有的時(shí)候不想他打包的時(shí)候進(jìn)行單元測(cè)試,就需要寫(xiě)以下的參數(shù)了:

3.4熱部署和熱加載

在學(xué)習(xí)完上面SpringBoot以后,我覺(jué)得并不過(guò)癮、隨后又發(fā)現(xiàn)了一個(gè)課程:http://www.imooc.com/learn/915

在標(biāo)題上寫(xiě)著的是SpringBoot和熱部署。于是我又進(jìn)去學(xué)習(xí)了。

好的,回到熱部署和熱加載。------

熱部署和熱加載這兩個(gè)名詞其實(shí)我剛開(kāi)始是搞不清的,不過(guò)這兩個(gè)名詞我都是聽(tīng)過(guò)的。因?yàn)槲以贗dea中使用了JRebel這個(gè)插件了,了解了大概的。

熱部署代表的是:我們不需要重啟服務(wù)器,能夠?qū)⑿聎ar包替換舊的war包

熱加載代表的是:我們不需要重啟服務(wù)器,就能夠類(lèi)檢測(cè)得到,重新生成類(lèi)的字節(jié)碼文件

無(wú)論是熱部署或者是熱加載、都是基于Java類(lèi)加載器來(lái)完成的。

3.4.1Java類(lèi)加載過(guò)程

Java文件被編譯成字節(jié)碼文件、classloader將字節(jié)碼文件放在JVM上運(yùn)行。

驗(yàn)證階段:字節(jié)碼文件不會(huì)對(duì)JVM造成危害

準(zhǔn)備階段:是會(huì)賦初始值,并不是程序中的值。比如:int=0

解析階段:符號(hào)引用變成直接引用

初始化階段:初始化程序的值、有5個(gè)情況會(huì)導(dǎo)致執(zhí)行初始化時(shí)機(jī):new、reflect、先初始化父類(lèi)再初始化子類(lèi)、main方法、JDK1.7動(dòng)態(tài)語(yǔ)言 ref_

final修飾的并不會(huì)觸發(fā),因?yàn)樗麜?huì)放在常量池中。

在里邊還有使用java代碼的時(shí)候來(lái)實(shí)現(xiàn)熱加載的,我就沒(méi)有去敲了。用到再回過(guò)去吧。!

3.4.2Tomcat熱部署

tomcat 可以使用3種方式實(shí)現(xiàn)熱部署:

直接啟動(dòng)tomcat后再把項(xiàng)目放進(jìn)webapp

修改servlet.xml中,context標(biāo)簽中加入屬性實(shí)現(xiàn)

通過(guò)自定義xml文件,放在localhost文件下面。我覺(jué)得就是第二點(diǎn)的延伸

3.4.3SpringBoot熱部署
springBoot熱部署3種方式:
1、在plugin標(biāo)簽中加入插件

    
        org.springframework
        springloaded
        1.2.6.RELEASE
    


進(jìn)入pom文件的目錄輸入 mvn spring-boot:run啟動(dòng)

2、啟動(dòng)的加入?yún)?shù) 引用springloaded jar包
    -javaagent:"jar包路徑" -noverify


3、pom文件加入依賴

    org.springframework.boot
    spring-boot-devtools
    true

2018年1月2日15:02:13

最后根據(jù)下面這篇博文來(lái)使用SpringBoot熱部署:http://blog.csdn.net/u013938484/article/details/77541050

值得注意的是:在IDEA下不是自動(dòng)編譯的,因此是需要按Ctrl+F9才能實(shí)現(xiàn)!

四、擴(kuò)展閱讀

后來(lái)我使用了SpringBoot搭建了一個(gè)簡(jiǎn)單的項(xiàng)目,從中也遇到了不少的問(wèn)題和相關(guān)的沒(méi)有接觸到的知識(shí)點(diǎn)。下面我會(huì)給出當(dāng)時(shí)搜索到的資料和遇到的問(wèn)題以及解決方案

4.1 SpringBoot教程參考資料:

http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/

http://www.cnblogs.com/magicalSam/p/7196340.html

springBoot整合mybatis,這次是沒(méi)有用到的,可能以后會(huì)用到:

http://www.cnblogs.com/elvinle/p/7999612.html

springBoot Github Demo:

https://github.com/t-hong/springboot-examples

與流行框架整合的Demo(慕課網(wǎng),對(duì)應(yīng)有課程的)

https://github.com/leechenxiang/imooc-springboot-starter

4.2 SpringBoot遇到的問(wèn)題以及解決資料

測(cè)試Controller使用MockMVC測(cè)試

http://www.cnblogs.com/xd03122049/p/6001457.html

http://blog.csdn.net/xiao_xuwen/article/details/52890730

http://www.cnblogs.com/xiaohunshi/p/5706943.html

springBoot攔截器

http://blog.csdn.net/catoop/article/details/50501696

SpringBoot攔截器無(wú)法注入Bean

https://my.oschina.net/u/1790105/blog/1490098

http://blog.csdn.net/mjlfto/article/details/65635135

出現(xiàn): Could not find acceptable representation原因及解決方法

http://blog.csdn.net/neosmith/article/details/51557957

或者是因?yàn)榉祷氐腏SON數(shù)據(jù),而你返回了一個(gè)頁(yè)面(使用RESTCONTROLLER沒(méi)有注意)

springBoot下使用統(tǒng)一異常處理方法:

http://www.cnblogs.com/magicalSam/p/7198420.html

springBoot集成Freemarker

http://ifeve.com/spring-boot-%E9%9B%86%E6%88%90-freemarker-%E8%AF%A6%E8%A7%A3%E6%A1%88%E4%BE%8B/

http://blog.csdn.net/z69183787/article/details/73850417

五、最后

SpringBoot能使我們簡(jiǎn)化繁瑣的配置,簡(jiǎn)化Maven包的依賴(缺點(diǎn):同時(shí)加入一些我們不需要的包)??傮w來(lái)看的是一個(gè)非常好用的框架(集成了很多有用的功能,與其他框架整合十分方便),學(xué)習(xí)成本很低(如果學(xué)過(guò)SpringMVC,分分鐘就上手),非常合適用來(lái)搭建環(huán)境。

如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章,想要獲取更多的Java資源的同學(xué),可以關(guān)注微信公眾號(hào):Java3y

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68868.html

相關(guān)文章

  • SpringBoot自動(dòng)配置原理

    摘要:開(kāi)啟自動(dòng)配置功能后文詳解這個(gè)注解,學(xué)過(guò)的同學(xué)應(yīng)該對(duì)它不會(huì)陌生,就是掃描注解,默認(rèn)是掃描當(dāng)前類(lèi)下的。簡(jiǎn)單來(lái)說(shuō),這個(gè)注解可以幫助我們自動(dòng)載入應(yīng)用程序所需要的所有默認(rèn)配置。簡(jiǎn)單理解這二者掃描的對(duì)象是不一樣的。 前言 只有光頭才能變強(qiáng)。 文本已收錄至我的GitHub倉(cāng)庫(kù),歡迎Star:https://github.com/ZhongFuCheng3y/3y 回顧前面Spring的文章(以學(xué)習(xí)...

    Rainie 評(píng)論0 收藏0
  • SpringBoot 實(shí)戰(zhàn) (一) | 如何使用 IDEA 構(gòu)建 Spring Boot 工程

    摘要:它使用約定大于配置的理念讓你的項(xiàng)目快速運(yùn)行起來(lái)。如何使用構(gòu)建工程第一步,當(dāng)然是安裝傻瓜式教程,請(qǐng)自行百度。包名,填完和后自動(dòng)生成,默認(rèn)即可。確認(rèn)無(wú)誤,點(diǎn)完成創(chuàng)建即可。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 新年立了個(gè) flag,好好運(yùn)營(yíng)這個(gè)公眾號(hào)。具體來(lái)說(shuō),就是每周要寫(xiě)兩篇文章在這個(gè)號(hào)發(fā)表。剛立的 flag 可不能這么快打臉。下面送上本周第...

    Ryan_Li 評(píng)論0 收藏0
  • SpringBoot原理深入篇

    摘要:?jiǎn)?dòng)原理和執(zhí)行原理分析一的啟動(dòng)原理我們打開(kāi),注意看下面兩個(gè)依賴我們第一步是繼承了父項(xiàng)目,然后在添加啟動(dòng)器的依賴,項(xiàng)目就會(huì)自動(dòng)給我們導(dǎo)入關(guān)于項(xiàng)目所需要的配置和。 上一篇我們看到,我們很輕松的完成了項(xiàng)目的構(gòu)建,那么SpringBoot是如何做到的呢,在使用的使用又有哪些通用配置和注意事項(xiàng)呢? 其實(shí)SpringBoot給我們做了大量的自動(dòng)配置功能,我們只需要引入對(duì)應(yīng)的啟動(dòng)器就可以直接使用,作...

    gotham 評(píng)論0 收藏0
  • SpringBoot:如何優(yōu)雅地處理全局異常?

    摘要:為了貼合主題,本次主要針對(duì)全局異常處理進(jìn)行舉例說(shuō)明。自定義異常處理自定義一個(gè)異常自定義異常程序員小明錯(cuò)誤碼錯(cuò)誤信息顯而易見(jiàn),這個(gè)異常繼承了,屬于運(yùn)行時(shí)異常。包括處理其他異常,都是這種方式。 之前用springboot的時(shí)候,只知道捕獲異常使用try{}catch,一個(gè)接口一個(gè)try{}catch,這也是大多數(shù)開(kāi)發(fā)人員異常處理的常用方式,雖然屢試不爽,但會(huì)造成一個(gè)問(wèn)題,就是一個(gè)Contr...

    李昌杰 評(píng)論0 收藏0
  • 帶你搭一個(gè)SpringBoot+SpringData JPA的環(huán)境

    摘要:一從零搭建環(huán)境本次我使用的是編輯器來(lái)搭建和環(huán)境首先,我們?cè)谛陆?xiàng)目的時(shí)候,選擇,然后就行了??梢钥闯?,本次的版本為。這是一個(gè)非常好用的插件,有了它我們可以不用寫(xiě)繁瑣的方法。非常適合我們做一些簡(jiǎn)答的測(cè)試和小功能。 前言 只有光頭才能變強(qiáng)。 文本已收錄至我的GitHub倉(cāng)庫(kù),歡迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家對(duì)SpringB...

    i_garfileo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<