Spring Boot是由Pivotal團隊提供的新框架,其設計目的是簡化Spring應用的搭建以及開發過程。其目標是:java
Spring Boot 2.1.2.RELEASE 版本 要求Java7或者更高版本(推薦用jdk8)、Spring Framework 4.3.12.RELEASE或更高版本。構建項目能夠經過Maven(3.2+)或Gradle3(3.4或更高版本)。web
Spring Boot快速入門例子spring
pom文件配置以下(關注粉紅色部分)apache
<?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>org.huxin.demo</groupId> <artifactId>spring-boot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-boot</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <!-- 請注意,它的 type 是 pom,scope 是 import,這種類型的 dependency 只能在 dependencyManagement 標籤中聲明。由於它是要在當前項目的依賴聲明列表中
引用某個依賴中的<dependencymanagement/>下的依賴聲明列表
--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
啓動類package org.huxin.demo.springbootspringboot
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController
@Configuration
@ComponentScan //這個註解告訴spring,以當前類所在的package爲basePackage,來掃描Bean @EnableAutoConfiguration //這個註解的另外一個做用會經過分析咱們當前項目的類路徑下是否含有一些特定的類,以此來爲咱們動態建立相應的Bean,這正是其AutoConfiguration(自動配置)的做用 public class Examples { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Examples.class, args); } }
pom文件也能夠配成這樣( 即繼承Spring Boot的父項目spring-boot-starter-parent )服務器
<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>org.huxin.demo</groupId> <artifactId>spring-boot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-boot</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2.RELEASE</version> </parent> <dependencies>
<!--spring-boot-starter依賴可省略--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
就這樣只一個pom配置文件加上一個Controller和一個main方法即完成了一個簡單的應用的開發。啓動main方法,經過http://localhost:8080/即能訪問。app
爲了更深刻的理解,咱們用類圖的方式簡單分析一下pom中的依賴關係:框架
從上圖能夠看到,爲何會有兩種配置方式呢,原來springboot這個框架對外能提供的starter(或者稱XX功能的jar集合)都放在spring-boot-dependencies這個父項目中,因此關鍵在於如何在pom中引入它。從圖中能夠看出經過spring-boot-starter-web項目的繼承機制是能引用到spring-boot-dependencies這個父項目的,可是缺乏一個版本號的提供,因此當咱們不指定spring-boot-starter-parent 做爲父項目時(由於此時指定spring-boot-starter-parent時會帶版本號),即不想借助繼承機制獲取這個父項目,就須要經過以下方式引入,這裏其實涉及到了maven的一個知識點,即maven的BOM功能。 maven
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
但若是明白整個原理我以爲也能夠用以下方式,經測試也是可行的
<?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.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring.boot.version>2.1.2.RELEASE</spring.boot.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring.boot.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
因此實際上是有三種方式來配置springboot項目的pom文件的。
下面咱們還須要考慮一個問題,就是在生產環境下該如何部署這個小項目,咱們須要在打好的jar中包含依賴的jar,這樣才能方便的在生產環境下啓動項目。Spring Boot已經幫咱們打理好了這一切,若是項目是繼承自 spring-boot-starter-parent ,在pom文件中插入下段配置就能夠
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
但若是項目不是繼承於 spring-boot-starter-parent ,則要配置以下
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
這樣再用mvn install進行打包,就會發現jar的大小比之前大了很多。打好包之後,進入命令行,執行 java -jar f:/temp/spring-boot-0.0.1.jar 就能夠把咱們的項目啓動起來了。