1. 程式人生 > >1、Spring boot 入門程式

1、Spring boot 入門程式

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 :核心模組,包括自動配置支援、日誌和YAML
  • spring-boot-starter-test :測試模組,包括junit、Hamcrest、Mokito

其他配置請看 : 官方文件

啟動項分析

啟動項分析

測試

寫一個 HelloController :
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)

github原始碼