写在前面
- SpringBoot版本:2.0.2 RELEASE
- 开发工具:IDEA 2017.2
- 相关资料:SpringBoot官方文档
1. 介绍SpringBoot
Spring Boot可以使我们轻松地创建独立的、生产级的基于Spring的应用程序,由于整合了一些对Spring和第三方库的配置,我们可以快速开始一个应用程序。大多数Spring Boot应用程序都需要很少的Spring配置。
我们可以使用Spring Boot来创建Java应用程序,这些应用程序可以通过使用 java -jar 或更传统的war部署来启动。Spring Boot还提供了一个运行“spring脚本”的命令行工具。
Spring Boot 为我们都做了什么:
-
为所有Spring开发人员提供一种快速而广泛的入门体验。
-
由于整合了一些对Spring和第三方库的配置解决了深受XML配置困扰的Spring开发人员的痛点
-
提供一系列非功能特性,这些特性在大型项目中是常见的(例如嵌入式服务器、安全、度量、健康检查和外部化配置)。
2.系统环境需求
-
Java 8 或 9
-
Spring 5.0.6 RELEASE 或 以上
-
构建工具
- Maven 3.2 +
- Gradle 4
-
Spring Boot支持以下servlet容器:
- Tomcat 8.5
- Jetty 9.4
- Undertow 1.4
3. 构建项目的方式
1.基于Maven的构建
pom.xml 内容如下:
<?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>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.基于Gradle的构建
bulid.gradle 内容如下:
plugins {
id 'org.springframework.boot' version '2.0.2.RELEASE'
id 'java'
}
jar {
baseName = 'myproject'
version = '0.0.1-SNAPSHOT'
}
repositories {
jcenter()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
4.开发Spring Boot 的Hello World 项目(使用maven构建工具)
</br>
第一步: 创建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>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
第二步:添加依赖
Spring Boot提供了许多“starter”,可以让您将jar添加到classpath 中。上文已经在POM的父部分使用了spring-boot-starter-parent。spring-boot-starter-parent是一个特殊的“starter”,它提供有用的Maven默认值。它还提供了一个依赖管理部分,这样我们就就可以为关联的依赖项省略版本标记。
其他"starter"提供了在开发特定类型的应用程序时可能需要的依赖项。由于我们正在开发一个web应用程序,所以我们添加了一个spring-boot-starter-web依赖项。在此之前,我们可以通过运行以下命令查看当前所拥有的内容。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
第三步:编写代码
要完成我们的应用程序,我们需要创建一个Java文件,Java文件包含以下代码:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}
注:
在我们的示例类上的第一个注释是@RestController。这被称为构造型注释。它为阅读代码的人们提供了一些提示,并且为Spring提供了一个特定的角色。在本例中,我们的类是一个web @Controller,所以Spring在处理传入web请求时考虑它。@RequestMapping注释提供路由信息。它告诉Spring,任何带有/ path的HTTP请求都应该映射到home方法。@RestController注释告诉Spring将生成的字符串直接呈现给调用者。
第二个类级别注释是@EnableAutoConfiguration。这个注释告诉Spring Boot基于您添加的jar依赖项“猜测”您想如何配置Spring,。因为Spring-boot-starter-web添加了Tomcat和Spring MVC,所以自动配置假设您正在开发一个web应用程序,并相应地设置Spring。
我们的应用程序的最后一部分是主方法。这只是遵循应用程序入口点的Java约定的标准方法。通过调用run,我们的main方法委托给Spring Boot的SpringApplication类。SpringApplication引导我们的应用程序启动Spring,而Spring又启动了自动配置的Tomcat web服务器。我们需要通过例子。类作为运行方法的参数,以告诉SpringApplication是主Spring组件。args数组也被传递,以公开任何命令行参数。
第四步:运行程序:
运行main方法,或者在根目录运行 mvn spring-boot: run命令。
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.2.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
打开浏览器,输入localhost:8080,你可以看到
Hello World!
第五步:创建可执行的jar
将下列代码添加到pom.xml文件中:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
保存文件,并在命令行输入maven package,可以看到:
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.2.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
这时你会发现target目录下多了一个名为myprojectname-0.0.1-SNAPSHOT.jar的文件,文件大概10MB,如果你想查看文件的详细内容,可以使用
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
如果你想运行,可以使用 java -jar,如下:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.2.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
若知后事如何,且听下回分解~
网友评论