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
- 解壓到本地目錄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