Spring学习系列

Getting Started

Spring Boot可以和经典的Java开发工具或者命令行工具一起使用,但是无论如何需要有JDK1.8以上的支持。
在开始之前,需要检查一下你的JDK版本

// check JDK version
$ java -version

1.安装教程

你可以像使用其他的标准的Java库一样来使用Spring Boot,只需要将spring-boot-*.jar文件适当的包含到你的classpath即可。Spring Boot不需要任何特殊的集成工具,所以你可以使用任何你喜欢的编辑器或者IDE.并且,对于一个Spring Boot应用来说,和其他的Java应用没有什么不同。你可以像调试其他的Java应用程序一样来调试你的Spring Boot应用程序。
虽然你完全可以将Spring Boot的jar包拷贝到你的工程目录然后使用,但我们强烈建议您使用支持依赖管理的构建工具,比如说Maven或者Gradle

JDK安装

这里就不说了,网上的教程一搜一大把,注意版本要在1.8以上

Maven安装

Spring Boot支持Apache Maven3.3以上的版本,安装指南可以参照这个链接
提示
如果你使用 OSX:

// Install maven on OSX
$ brew install maven

如果你使用 Ubuntu:

// Install maven on ubuntu
$ sudo apt-get install maven

注意检查一下版本

// check maven version
$ mvn --version

注意:如果版本低于3.3,则需要手动安装,和JDK安装基本一样,设置好环境变量就OK。

Spring Boot的依赖使用 org.springframework.boot groupId。典型用法是你的Maven的pom文件继承spring-boot-starter-parent工程并且申明对一个或者多个Starters的依赖。Spring Boot也支持一个可选的Maven插件来创建可执行的jar包。下面是一个典型的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.1.0.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>

提示
使用spring-boot-starter-parent是使用Spring Boot的很好的方式

2.安装Spring Boot CLI

Spring Boot CLI(Command Line Interface)是一个你可以快速构建Spring应用的命令行接口i,它让你可以运行Groovy脚本。当然了,你也可以不使用Spring Boot CLI,但使用Spring Boot CLI绝对是构建Spring应用的最快方式。

手动安装

下载链接
下载完成之后解压缩,在bin目录下有可执行文件(win下有.bat文件)
测试(Linux下)

// test spring Boot CLI
$ ./spring --version

windows下

// test spring Boot CLI
$ .\spring.bat --version

命令行接口测试

首先创建一个名叫app.groovy的文件,内容如下:

@RestController
class ThisWillActuallyRun {

	@RequestMapping("/")
	String home() {
		"Hello World!"
	}

}

从命令行运行(Linux)

$ spring run app.groovy

Windows下

$ .\spring.bat run app.groovy

注意:第一次运行需要下载依赖包,需要等待几分钟,然后打开浏览器,在地址栏输入 localhost:8080 即可看到如下输出:

Hello World!

3.创建你的第一个Spring Boot应用

开始之前首先确认一下我们的JDK和Maven都安装正确了,因为下面将会用到它们。

3.1创建一个项目

新建一个文件夹,名为test1,所有的项目文件将存放在这个文件夹里面

3.2创建POM文件

我们需要首先创建一个Maven的pom.xml文件。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>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.0.RELEASE</version>
	</parent>

	<!-- Additional lines to be added here... -->

</project>

在test1文件夹下,执行

$ mvn package

Spring Boot提供了很多的Starters来让你添加jar包到你的calsspath。我们的例程在POM文件里面的parent段里面使用了spring-boot-starter-parentspring-boot-starter-parent是一个特殊的starter,可以提供很多的默认的Maven设置。也提供了一个dependency-management段,这样你可以省略version标签。
当你开发某一特定类型的应用的我时候,其他的starter提供了你可能需要的依赖。因为我们是在开发一个web应用
,我们添加一个spring-boot-starter-web依赖。在那之前,我们可以通过运行下面的命令来看一看我们现在有些什么:

$ mvn dependency:tree

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree命令打印了你的项目依赖的一个树形描述。你可以看到spring-boot-starter-parent自己没有提供依赖。如果要添加依赖,编辑你的pom.xml。在parent段下面添加spring-boot-starter-web依赖。

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
</dependencies>

再次运行$ mvn dependency:tree
你就可以看到很多额外的依赖,包括Tomcat web server和Spring Boot自己。

3.3 编写代码

在test1文件夹下创建src/main/java/Example.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);
	}

}

尽管这里的代码不多,但是后面却有很多东西在运行。我们将在下面进行分析。

3.3.1 @RestController 和 @RequestMapping 注解

我们的Example类中的第一个注解是@RestController.这是一个被称为原型的注解。作用是告诉阅读代码的人,这个类扮演着一个特殊的角色。在本例中,我们的类是一个web @Controller,所以再有web请求的时候,Spring就会考虑到它。

我们的 @RequestMapping注解提供了一个路由的信息。它告诉Spring,任何带有/的HTTP请求都应该被映射到home方法。@RestController注解告诉Spring将结果直接返回给调用者。

注意:这里的 @RestControllerRequestMapping注解都是Spring MVC的注解。

3.3.2 @EnableAutoConfiguration 注解

第二个类级别的注解是@EnableAutoConfiguration。这个注解告诉Spring Boot,基于你添加的jar包的依赖,去“猜测”你将如何配置你的Spring。由于spring-boot-starter-web添加了Tomcat和SpringMVC,自动配置将认为你是在开发一个web应用并将为之设置Spring.

Starters 和Auto-configuration
Auto-configuration被用来和Starters更好的工作,但是这两个概念并不是直接联系在一起的。你可以选择Starter之外的jar包依赖.Spring-Boot任然会竭尽全力为你缴纳自动配置好你的应用。

3.3.3 main方法

我们的应用的最后一个部分就是main方法。我们的main方法通过调用run方法来调用Spring Boot的SpringApplication.SpringApplication将会启动我们的应用,启动Spring,Spring会启动自动配置好的Tomcat。我们需要将Example.class作为一个参数传递给run方法,告诉SpringApplication哪一个是基本的Spring单元。args也传递过去以曝露任何需要的命令行参数。

3.4运行例程

$ mvn spring-boot:run

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.1.0.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

打开浏览器,访问localhost:8080,将会开到如下输出:

Hello World !

3.5创建一个可执行的jar包

在最后,我们将创建一个可以在生产环境中运行的jar包来结束例程。可执行jar包(有时候被称为“fat jars”)是包含着编译好的类和依赖的jar包的文件集合。

				可执行jar包和Java

Java并不提供一个标准的方法来加载递归的jar包(本身包含jar包的jar包)。如果你需要一个自我包含的发行版的应用的话就有问题了。
为了解决这个问题,很多开发者使用“uber”jar包。“uber”jar包指的是将应用依赖的所有的类都打包到一个集合。这种方法的问题就在于很难看清楚你的应用里卖弄有哪些类库。如果使用了同一个类名(内容不同)会带来问题。
Spring Boot采取了不同的方式,让你可以直接递归使用你都jar包。

为了创建一个可执行的jar包,我们需要将spring-boot-maven-plugin加入到我们的pom.xml中。只需要将下面的内容添加到dependencies段的下面。

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

注意:我们的spring-boot-starter-parentPOM已经包含了<executions>配置来绑定repackage目标。如果你不使用parent POM,你就需要自己申明这个配置。具体可以参看配置文档

保存pom.xml,执行 mvn 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.1.0.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

此时,你会发现你的test1/target文件夹下,会出现一个myproject-0.0.1-SNAPSHOT.jar,十多MB大小,想看里面的内容,使用:

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

在target文件夹下,可以看到一个小得多的文件 myproject-0.0.1-SNAPSHOT.jar.original
这是Spring重新打包之前maven之前创建的。
运行这个应用,需要使用java -jar命令:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.1.0.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

参考:
[1]https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#boot-documentation

猜你喜欢

转载自blog.csdn.net/u010971018/article/details/84585547
今日推荐