1、Spring boot 入門程式
阿新 • • 發佈:2018-12-02
Spring boot 入門程式
什麼是Spring boot
Spring Boot
是由Pivotal團隊提供的全新框架 。為了簡化 Spring 應用的建立 、執行 、除錯 、部署等一系列問題而誕生的產物 ,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置 ,我們只需遵循規範 ,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 。
設計目的
- 簡化
Spring
應用的初始搭建以及開發過程 Spring Boot
整合了所有的框架- 提供一些常見的功能、如監控、WEB容器,健康,安全等功能
Spring Boot特性
- 建立獨立的Spring應用程式
- 嵌入的Tomcat,無需部署WAR檔案
- 簡化Maven配置
- 自動配置Spring
- 提供生產就緒型功能,如指標,健康檢查和外部配置
- 開箱即用,沒有程式碼生成,也無需XML配置。
Spring Boot特性理解
- 為基於Spring的開發提供更快的入門體驗
開箱即用,沒有程式碼生成,也無需XML配置。同時也可以修改預設值來滿足特定的需求。 - 提供了一些大型專案中常見的非功能特性,如嵌入式伺服器、安全、指標,健康檢測、外部配置等。
- Spring Boot並不是對Spring功能上的增強,而是提供了一種快速使用Spring的方式。
開發環境
JDK1.8
Maven
IntelliJ IDEA
專案建立
以 IntelliJ IDEA
為例 :
方式一 :訪問 https://start.spring.io/
填寫完資訊後下載壓縮包 ,解壓後匯入 IntelliJ IDEA
。
方式二 : IntelliJ IDEA
建立
目錄結構
pom
依賴
<?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>cn.ylx</groupId>
<artifactId>springboot-helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-helloworld</name>
<description>springboot-helloworld</description>
<!-- SpringBoot專案要繼承的父類 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- SpringBoot專案要繼承的父類 -->
<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>
spring-boot-starter
:核心模組,包括自動配置支援、日誌和YAMLspring-boot-starter-test
:測試模組,包括junit、Hamcrest、Mokito
其他配置請看 : 官方文件
啟動項分析
測試
寫一個 HelloController
:
注意: @RestController
等價於 @Controller
@ResponseBody
啟動啟動項:
瀏覽器輸入:http://localhost:8080/hello
報錯:
錯誤原因:
解決方法:
移動啟動項至 Controller
上級目錄。
啟動成功控制檯列印內容
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.0.RELEASE)
2018-12-01 02:39:53.341 INFO 5404 --- [ main] cn.ylx.SpringbootHelloworldApplication : Starting SpringbootHelloworldApplication on DESKTOP-10FVA01 with PID 5404 (C:\ylx\Git\springboot\springboot-helloworld\target\classes started by ys951 in C:\ylx\Git\springboot)
2018-12-01 02:39:53.344 INFO 5404 --- [ main] cn.ylx.SpringbootHelloworldApplication : No active profile set, falling back to default profiles: default
2018-12-01 02:39:54.249 INFO 5404 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2018-12-01 02:39:54.265 INFO 5404 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-12-01 02:39:54.265 INFO 5404 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/9.0.12
2018-12-01 02:39:54.271 INFO 5404 --- [ main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Java\jdk1.8.0_181\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;.;C:\Java\jdk1.8.0_181\bin;C:\Java\jdk1.8.0_181\jre\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin;C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin;C:\ylx\apache-maven-3.3.9\bin;G:\ys\hadoop-2.6.0-cdh5.7.6\bin;C:\Scala\scala\bin;D:\JAVAEE\VisualSVN Server\bin;D:\JAVAEE\TortoiseSVN\bin;C:\Users\ys951\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\SSH Communications Security\SSH Secure Shell;C:\Users\ys951\AppData\Local\GitHubDesktop\bin;.]
2018-12-01 02:39:54.404 INFO 5404 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-12-01 02:39:54.405 INFO 5404 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1018 ms
2018-12-01 02:39:54.428 INFO 5404 --- [ main] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2018-12-01 02:39:54.435 INFO 5404 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-12-01 02:39:54.435 INFO 5404 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-12-01 02:39:54.436 INFO 5404 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'formContentFilter' to: [/*]
2018-12-01 02:39:54.436 INFO 5404 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2018-12-01 02:39:54.598 INFO 5404 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2018-12-01 02:39:54.783 INFO 5404 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-12-01 02:39:54.787 INFO 5404 --- [ main] cn.ylx.SpringbootHelloworldApplication : Started SpringbootHelloworldApplication in 1.768 seconds (JVM running for 2.642)