01springboot入門(mén)

SpringBoot是什么
SpringBoot是一個(gè)框架珠移,一種全新的編程規(guī)范,他的產(chǎn)生簡(jiǎn)化了框架的使用殉了,所謂簡(jiǎn)化是指簡(jiǎn)化了Spring眾多框架中所需的大量且繁瑣的配置文件贴汪,所以 SpringBoot是一個(gè)服務(wù)于框架的框架,服務(wù)范圍是簡(jiǎn)化配置文件蕊肥。
SpringBoot可以做什么
最明顯的特點(diǎn)是谒获,讓文件配置變的相當(dāng)簡(jiǎn)單、讓?xiě)?yīng)用部署變的簡(jiǎn)單(SpringBoot內(nèi)置服務(wù)器壁却,并裝備啟動(dòng)類(lèi)代碼)批狱,可以快速開(kāi)啟一個(gè)Web容器進(jìn)行開(kāi)發(fā)。
SpringBoot工程的使用特點(diǎn)
(1)一個(gè)簡(jiǎn)單的SpringBoot工程是不需要在pom.xml手動(dòng)添加什么配置的展东,如果與其他技術(shù)合用 比如postMan(文檔在線自動(dòng)生成赔硫、開(kāi)發(fā)功能測(cè)試的一套工具)、Swagger(文檔在線自動(dòng)生成盐肃、開(kāi)發(fā)功能測(cè)試的一套工具)爪膊,則需要在pom.xml中添加依賴(lài),由程序自動(dòng)加載依賴(lài)jar包等配置文件砸王。
(2)我們之前在利用SSM或者SSH開(kāi)發(fā)的時(shí)候推盛,在resources中儲(chǔ)存各種對(duì)應(yīng)框架的配置文件,而現(xiàn)在我們只需要一個(gè)配置文件即可谦铃,配置內(nèi)容也大體有 服務(wù)器端口號(hào)耘成、數(shù)據(jù)庫(kù)連接的地址、用戶(hù)名驹闰、密碼瘪菌。這樣,雖然簡(jiǎn)單 但在一定問(wèn)題上而言嘹朗,這也是極不安全的师妙,將所有配置,放在一個(gè)文件里骡显,是很危險(xiǎn)的疆栏,但對(duì)于一般項(xiàng)目而言并不會(huì)有太大影響曾掂。
(3)在SpringBoot創(chuàng)建時(shí)會(huì)自動(dòng)創(chuàng)建Bootdemo1Application啟動(dòng)類(lèi),代表著本工程項(xiàng)目和服務(wù)器的啟動(dòng)加載,在springBoot中是內(nèi)含服務(wù)器的壁顶,所以不需手動(dòng)配置Tomact珠洗,但注意端口號(hào)沖突問(wèn)題。

第一部分 建立第一個(gè)程序

D:\springboot\demo

下載

1)進(jìn)入網(wǎng)址:https://start.spring.io/
2)選擇maven
3)group:組織機(jī)構(gòu)若专,即包名 com.neuedu
4)artifact:項(xiàng)目名稱(chēng) 如demo
5)web:選web(full-stack web develepment for springmvc 全棧)
6)點(diǎn)擊下方的Switch to the full version 可以選擇jdk版本许蓖。
6)點(diǎn)擊gererate project 生成項(xiàng)目
7)下載到本地。demo.zip

  1. 解壓到本地目錄D:\springboot\demo
    沒(méi)有敲一行代碼调衰,項(xiàng)目就生成了

eclipse導(dǎo)入

1)file-import-maven已經(jīng)存在的工程-選剛才解壓的工程即完成導(dǎo)入
2)右鍵工程-maven-update project-勾選force update of snapshots/releases選項(xiàng)
3)等待下載jar包完成 ......
4)找到DemoApplication右鍵啟動(dòng)膊爪,可以看到tomcat加載成功。
日志當(dāng)中有:Tomcat started on port(s): 8080 (http) with context path '' 字樣

問(wèn)題解決:

中間如果遇到error parsing lifecycle processing instrctions錯(cuò)誤嚎莉,清空.m2文件夾重新下載即可

第二部分 讀懂項(xiàng)目結(jié)構(gòu)

src/main/java 程序開(kāi)發(fā)及主程序入口
src/main/resources 配置文件
src/test/java 測(cè)試文件
重點(diǎn)是:maven配置文件
解析:pom.xml

設(shè)置Spring Boot的parent

Spring Boot的項(xiàng)目必須要將parent設(shè)置為Spring Boot的parent米酬,該parent包含了大量默認(rèn)的配置,大大簡(jiǎn)化了我們的開(kāi)發(fā)趋箩。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

設(shè)置Spring Boot的依賴(lài)starter

spring-boot-starter-web:支持全棧式Web開(kāi)發(fā)赃额,得到一個(gè)可執(zhí)行的基于SpringMVC 的web應(yīng)用,默認(rèn)使用嵌入式tomcat作為web容器對(duì)外提供http服務(wù)
spring-boot-starter-test:測(cè)試模塊叫确,包括JUnit跳芳、Hamcrest、Mockito以及spring-test模塊

 <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Spring Boot的插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Sping Boot建議的目錄結(jié)果如下

1竹勉、Application.java 建議放到根目錄下面,主要用于做一些框架配置
2飞盆、controller 負(fù)責(zé)頁(yè)面訪問(wèn)控制
3、domain目錄主要用于實(shí)體(Entity)與數(shù)據(jù)訪問(wèn)層(Repository)
4次乓、service 層主要是業(yè)務(wù)類(lèi)代碼

主啟動(dòng)文件

@SpringBootApplication:Spring Boot項(xiàng)目的核心注解吓歇,主要目的是開(kāi)啟自動(dòng)配置

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

接下來(lái),新建包c(diǎn)om.neuedu.demo.controller并在其下編寫(xiě)一個(gè)controller做為測(cè)試檬输,代碼如下

package com.neuedu.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
@RequestMapping("/hello.do")
public String index() {
return "Hello World";
}
}

運(yùn)行測(cè)試程序:http://localhost:8080/hello.do
打印出Hello World照瘾,成功。

注意:主啟動(dòng)類(lèi)要放到最外側(cè),即包含所有子包丧慈,否則會(huì)訪問(wèn)不到。

@RestController注解主卫,相當(dāng)于@Controller+@ResponseBody兩個(gè)注解的結(jié)合逃默,返回json數(shù)據(jù)不需要在方法前面加@ResponseBody注解了,但使用@RestController這個(gè)注解簇搅,就不能返回jsp,html頁(yè)面完域,視圖解析器無(wú)法解析jsp,html頁(yè)面

拓展:研究spring-boot-starter-parent包含哪些默認(rèn)配置

jsp支持

熱部署

實(shí)際開(kāi)發(fā)中,修改某個(gè)頁(yè)面數(shù)據(jù)或邏輯功能都需要重啟應(yīng)用瘩将。這無(wú)形中降低了開(kāi)發(fā)效率吟税,所以使用熱部署是十分必要的凹耙。
什么是熱部署?
應(yīng)用啟動(dòng)后會(huì)把編譯好的Class文件加載到虛擬機(jī)中肠仪,正常情況下在項(xiàng)目修改了源文件時(shí)需要全部重新編譯并重新加載(需要重啟應(yīng)用)肖抱。而熱部署就是監(jiān)聽(tīng)Class文件的變動(dòng),只把發(fā)生修改的Class重新加載异旧,而不需要重啟應(yīng)用意述,使得開(kāi)發(fā)變得簡(jiǎn)便。

Spring Boot 配置實(shí)現(xiàn)熱部署

添加依賴(lài)包吮蛹,運(yùn)行熱部署荤崇,全部代碼參見(jiàn):demo-devtools工程

   <!-- 熱部署模塊 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>

配置支持jsp

Spring Boot使用的內(nèi)嵌的tomcat
內(nèi)嵌的tamcat是不支持jsp頁(yè)面
需要導(dǎo)入額外的包

    <!-- jsp支持 -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
        <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

測(cè)試程序編寫(xiě)

新建source目錄 src/main/webapp 默認(rèn)的頁(yè)面存放處

添加jsp頁(yè)并測(cè)試

src\main\webapp\test.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>訪問(wèn)jsp文件</h1>
</body>
</html>

測(cè)試運(yùn)行

瀏覽器url里輸入http://localhost:8080/test.jsp

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市潮针,隨后出現(xiàn)的幾起案子术荤,更是在濱河造成了極大的恐慌,老刑警劉巖每篷,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喜每,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡雳攘,警方通過(guò)查閱死者的電腦和手機(jī)带兜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吨灭,“玉大人刚照,你說(shuō)我怎么就攤上這事⌒郑” “怎么了无畔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吠冤。 經(jīng)常有香客問(wèn)我浑彰,道長(zhǎng),這世上最難降的妖魔是什么拯辙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任郭变,我火速辦了婚禮,結(jié)果婚禮上涯保,老公的妹妹穿的比我還像新娘诉濒。我一直安慰自己,他們只是感情好夕春,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布未荒。 她就那樣靜靜地躺著,像睡著了一般及志。 火紅的嫁衣襯著肌膚如雪片排。 梳的紋絲不亂的頭發(fā)上寨腔,一...
    開(kāi)封第一講書(shū)人閱讀 51,610評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音率寡,去河邊找鬼迫卢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勇劣,可吹牛的內(nèi)容都是我干的靖避。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼比默,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼幻捏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起命咐,我...
    開(kāi)封第一講書(shū)人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤篡九,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后醋奠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體榛臼,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年窜司,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沛善。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡塞祈,死狀恐怖金刁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情议薪,我是刑警寧澤尤蛮,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站斯议,受9級(jí)特大地震影響产捞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哼御,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一坯临、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艇搀,春花似錦尿扯、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芳杏。三九已至矩屁,卻和暖如春辟宗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吝秕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工泊脐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烁峭。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓容客,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親约郁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缩挑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容