- 本文作者:唐亞峯
- 本文鏈接:http://blog.battcn.com/2018/04/20/springboot/v2-introducing/
- **版權聲明:**本博客所有文章除特別聲明外,均採用CC BY-NC-SA 3.0許可協議。轉載請註明出處!
SpringBoot
是爲了簡化Spring
應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規範,引入相關的依賴就可以輕易的搭建出一個 WEB 工程
##更多幹貨:
SpringBoot系列博客目錄,含1.5.X版本和2.X版本
強烈推薦
分享一個大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到人工智能的隊伍中來!http://www.captainbed.net
未接觸SpringBoot
之前,搭建一個普通的WEB
工程往往需要花費30分鐘左右,如果遇到點奇葩的問題耽擱的時間會更長一點,但自從用了SpringBoot
後,真正體會到什麼叫分分鐘搭建一個WEB
,讓我擁有更多的時間跟我的小夥伴們嘮嗑了。使用SpringBoot
後發現一切是如此的簡單(還記得讀書那會被JAR包,xml支配的恐懼嗎,如今都可以說 good bye)
設計的目標
- 爲所有使用
Spring
的開發者提供一個更簡單,快速的入門體驗 - 提供一些常見的功能、如監控、WEB容器,健康,安全等功能
- 幹掉XML,遵循規範,開箱即用
前提
SpringBoot
爲我們提供了一系列的依賴包,所以需要構建工具的支持:Maven
或Gradle
。由於本人更習慣使用**Maven
所以後續案例都是基於Maven
與IntelliJ IDEA
,同時這裏是基於最新的SpringBoot2編寫的哦...
**
創建項目
初次接觸,我們先來看看如何創建一個Spring Boot
項目,這裏以IntelliJ IDEA
爲例,其他的IDE工具小夥伴們自行搜索創建方式。創建完項目後,各位小夥伴請認真、細心的對比下與傳統的WEB工程有何區別(如:目錄結構)。
點擊**
File -> Project
**
如果用過Eclipse/IDEA
等工具的,對創建項目肯定不會陌生,但爲了照顧第一次使用的我貼上了圖文
選擇**
Spring Initializr
**
到這一步選擇的時候,如圖中選項的是Spring Initializr(官方的構建插件,需要聯網)
,第二個是自己選擇Maven
構建,爲了更好的適合初學者,我們將在本章用插件構建
填寫項目基本信息
Group:
組織ID,一般分爲多個段,這裏我只說兩段,第一段爲域,第二段爲公司名稱。域又分爲org、com、cn
等等,其中org爲非營利組織,com爲商業組織
。如阿里、淘寶(com.alibaba/com.taobao)- **
Artifact:
**唯一標識符,一般是項目名稱
選擇包
** Spring Initializr
爲我們提供了很多的選項,不同的選項有不同的作用,在初期我們只需要依賴Web -> Web
就可以了,選擇好依賴包之後點擊Next
->Finish
**
目錄結果
- src
-main
-java
-package
#主函數,啓動類,運行它如果運行了 Tomcat、Jetty、Undertow 等容器
-SpringbootApplication
-resouces
#存放靜態資源 js/css/images 等
- statics
#存放 html 模板文件
- templates
#主要的配置文件,SpringBoot啓動時候會自動加載application.yml/application.properties
- application.yml
#測試文件存放目錄
-test
# pom.xml 文件是Maven構建的基礎,裏面包含了我們所依賴JAR和Plugin的信息
- pom
pom.xml 依賴
因爲使用了**Spring Initializr
插件,所以如下的配置都不需要我們自己去寫啦,需要注意的是版本要選擇RELEASE
**,穩定版本BUG少
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.battcn</groupId>
<artifactId>chapter1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>chapter1</name>
<description>我的用第一個SpringBoot工程</description>
<!--版本採用的是最新的 2.0.1.RELEASE TODO 開發中請記得版本一定要選擇 RELEASE 哦 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- 默認就內嵌了Tomcat 容器,如需要更換容器也極其簡單-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 測試包,當我們使用 mvn package 的時候該包並不會被打入,因爲它的生命週期只在 test 之內-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 編譯插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
其它的依賴可以參考:官方文檔
主函數入口
**注意事項:**一個項目中切記不要出現多個main
函數,否在在打包的時候spring-boot-maven-plugin
將找不到主函數(主動指定打包主函數入口除外…)
package com.winterchen;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
/**
* 我的第一個springboot程序
* 其中 @RestController 等同於 (@Controller 與 @ResponseBody)
*/
@RestController
@SpringBootApplication
public class SpringBootStartApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootStartApplication.class, args);
}
@GetMapping("/demo1")
public String demo1() {
return "Hello Luis";
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
// 目的是
return args -> {
System.out.println("來看看 SpringBoot 默認爲我們提供的 Bean:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
Arrays.stream(beanNames).forEach(System.out::println);
};
}
}
初窺配置文件
從啓動日誌中可以發現,SpringBoot
默認的端口是 8080 ,那麼如果端口被佔用了怎麼辦呢?不要慌,問題不大,配置文件分分鐘解決你的困擾…
2018-04-20 16:14:46.725 INFO 11184 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
修改默認配置
# 默認的 8080 我們將它改成 9090
server.port=9090
# 未定義上下文路徑之前 地址是 http://localhost:8080 定義了後 http://localhost:9090 你能在tomcat做的事情,配置文件都可以
server.servlet.context-path=/chapter1
在啓動一次看看日誌
2018-04-20 16:47:05.716 INFO 12108 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9090 (http) with context path '/chapter1'
測試
啓動項目後直接訪問http://localhost:9090/chapter/demo1
進行測試
拓展知識
自定義Banner
SpringBoot
啓動的時候我們可以看到如下內容,這一塊其實是可以自定義的哦,而且在 2.X 版本中,它支持的格式從文本擴展到**banner.txt、banner.jpg、banner.gif、banner.jpeg
等等,只需要在resouces
**目錄下添加指定命名的文件即可
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.1.RELEASE)
總結
目前很多大佬都寫過關於**SpringBoot
**的教程了,如有雷同,請多多包涵,本教程基於最新的spring-boot-starter-parent:2.0.1.RELEASE
編寫,包括新版本的特性都會一起介紹…
說點什麼
springboot技術交流羣:681513531
全文代碼:https://github.com/WinterChenS/springboot-learning-experience
- 本文作者:唐亞峯
- 本文鏈接:http://blog.battcn.com/2018/04/20/springboot/v2-introducing/
- **版權聲明:**本博客所有文章除特別聲明外,均採用CC BY-NC-SA 3.0許可協議。轉載請註明出處!