Springboot 2.1.4 开始使用

* 参考文档 *

官方Doc:
https://docs.spring.io/spring-boot/docs/2.1.4.RELEASE/reference/htmlsingle/#getting-started

0. 背景

如果你正准备开始使用Spirng Boot,或者一般的Spring,阅读以下章节。它将会告诉你一些基本的问题:“是什么”,“为什么”,“怎么做”。它包括一些SpringBoot介绍和安装指导。接下来将带领你开始构建第一个S

pringBoot应用,讨论一些核心的规则。

1. 介绍Spring boot

Spring Boot使得创建独立的、产品级的Spring应用变得更加容易。我们加入了一些对Spring平台和第三方库的设计,使得使用时不会有太多的疑惑。大多数的Spring Boot应用需要很少的Spring配置。

你也可以使用SpringBoot来创建Java应用,使用指令java -jar来运行。又或者是发布传统的war部署。Spring Boot也提供了命令行工具来运行“spring scripts”。

Spring Boot的主要目的是:

  1. 给所有Spring开发入门提供更快更宽泛的理解
  2. 不拘泥于特定框架,但是当需求与预设不一致时可以及时更改。
  3. 提供大量非函数的特性,这些在大项目中的类(如内嵌server,security, metrics, health checks和externalized configuration)非常常用。
  4. 完全没有代码生成,也不需要xml配置。

2. 系统要求

Spring Boot 2.1.4 release 需要Java 8以上(目前兼容到java 11)。Spring Framework 5.1.6 release及以上也有同样的要求。
构建工具可以使用maven(3.3以上)或Gradle(4.4+)

构建工具版本
Maven3.3+
Gradle4.4+

2.1 Servlet容器

Spring Boot支持以下内嵌servlet容器

名字Servlet版本
Tomcat 9.04.0
Jetty 9.43.1
Undertow 2.04.0

你也可以部署Web应用到兼容Servlet3.1的容器中。

3. 安装

Spring Boot可以使用经典的Java开发工具,也可以安装成为命令行工具(Spring boot cli)。不管哪一种方式,都是先安装Java 8,首先检查你的java版本

java -version

如果你刚开始接触Java开发或者你想简单地体验以下Spring Boot,你可以尝试使用Spring Boot CLI(命令行界面)。否则,阅读经典的安装指南。

3.1 Java开发者的安装指南

你可以把Spring Boot当做一个标准Java库来使用,把spring-boot-*.jar文件放到你的类路径中。Spring Boot不需要任何的集成工具,因此你可以使用任何的IDE或者文本编辑器。Spring Boot应用没有任何特别的地方,你可以跟其他Java程序一样进行运行和调试。

尽管你可以直接复制Spring Boot jar文件来使用,但我们一般建议你使用有依赖管理的工具进行构建。

下文主要采用Maven安装

3.1.1 Maven安装

Spring Boot兼容Maven 3.3或者更高。如果你还没有安装过Maven,你可以阅读maven的官方教程(maven.apache.org)。

在很多系统中,Maven可以通过包管理器进行安装。如果你使用OSX Homebrew,使用brew install maven。Ubuntu使用者可以使用sudo apt-get install maven,Windows用户可以在Chocolatey里使用choco install maven,可能需要管理员权限。

Spring Boot依赖以org.springframework.boot 为groupId。一般地,你的Maven POM文件需要继承spring-boot-starter-parent项目,并且声明一些“Starters”依赖。Spring Boot也提供了一个可选的Maven插件来创建可执行jar文件。

pom.xml文件如下(这里对于web应用,添加了spring-boot-starter-web依赖)。

<?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 https://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.4.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是一个很好的途径,但是有时候可能不太适用。你可能需要从别的parent POM里继承,或者你可能不喜欢我们的默认设置。在这里情况下,可以参考章节“Using Spring Boot without the Parent POM”

3.1.2 Gradle安装

还没使用,跳过

3.2 安装Spring Boot CLI

还没计划使用,跳过

3.2.1 手动安装

3.2.2 使用SDKMAN安装

3.2.3 OSX Homebrew中安装

3.2.4 MacPorts安装

3.2.5 命令行完成

3.2.6 Windows下Scoop安装

3.2.7 快速开始Spring CLI样例

3.3 从Spring Boot的老版本升级

我没用过老版本,不需要升级迁移,不看。

4. 部署你的第一个Spring Boot应用

这一章教你怎样来部署一个简单的“Hello World” Web应用,使用一些Spring Boot的关键特性。我们使用Maven来构建项目,当然还有很多IDEs也支持。

spring.io网站中也有很多使用Spring Boot的“Getting Started”教程,如果你想解决某一个特定的问题,可以先去那找找。
你也可以跳过下面的步骤,直接到start.spring.io上,从依赖搜索器中选择“Web” starter,然后生成一个项目,你可以直接在里面编写你的代码。更多内容请浏览Spring Initializr文档

在我们开始之前,打开你的终端,输入以下命令确保你的机器上安装了有效版本的Java和Maven。

java -version
mvn -v

4.1 创建POM

我们从Maven的POM文件开始。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 https://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.4.RELEASE</version>
	</parent>

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

</project>

上面内容就可以让你得到一个Web应用的构建,你可以运行命令行mvn package来测试它,由于还没加别的内容,你可以忽略(“jar will be empty - no content was markd for inclusion”)的警告。

4.2 增加类路径依赖

Spring Boot提供了大量的“Starters”,、你能够在类路径中添加jars。我的的样例应用使用了spring-boot-starter-parent在parent节点里,这是一个特别的starter提供了一些有用的Maven默认值。它也提供依赖管理节点,以至于一些受保护的依赖你可以忽略version标签。

其他的“Starters”给特定类型的应用提供依赖。例如我们要开发一个Web应用,需要加入spring-boot-starter-web依赖。在那之前,我们可以通过命令来查看现在有的依赖:

mvn dependency:tree

上面的命令以树状形式展示你的项目依赖项。你可以看到spring-boot-starter-parent不提供任何依赖。为了加入我们需要的依赖。编辑pom.xml文件,在dependency节点内加入你的依赖。

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

这时候再次运行mvn depency:tree,你可以看到多了一些新增的依赖,包括Tomcat web服务和Spring Boot。

4.3 编写代码

为了完成应用,我们需要创建一些简单的Java文件。默认地,Maven编译文件路径为src/main/java,因此你需要去创建这样的文件结构,然后增加一个新的类,命名为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) {
		SpringApplication.run(Example.class, args);
	}

}

虽然这没有很多条代码,但已经可以支持运行了,下面我们将一步步来讲解里面的关键部分。

4.3.1 @RestController和@RequestMapping注解

Example类中的第一个注解是@RestController,这是一个构造型注解。它的作用一是提示阅读代码的人,二是告诉Spring这个类承担着特殊的角色。在这个例子中,我们的类是一个web controller,因此Spring在处理收到的网络请求时,会考虑该类的内容。

@RequestMapping注解提供一个路由信息。它告诉Spring任何带着"/"路径的HTTP请求应该被关联到home方法。@RestController注解告诉Spring来将结果字符串返回给调用者。

@RestController和@RequestMapping注解都是Spring MVC注解(不是Spring Boot中特有的)。查阅Spring官方文档中的MVC章节

4.3.2 @EnableAutoConfiguration注解

第二个类级别的注解是@EnableAutoConfiguration。这个注解告诉Spring Boot基于你添加的依赖来“猜”你想要怎样配置Spring。这里spring-boot-starter-web依赖添加了Tomcat和Spring MVC,因此“auto-configuration”假定你想要开发一个Web应用,帮你自动配置好。

Starters和Auto-configuration
Auto-configuration是为Starters设计的,但这不意味着这两个概念完全绑定。你可以自由地选择starters以外的依赖包,Spring Boot依然可以auto-configure你的应用。

4.3.3 main()方法

应用中的最后一部分是main()方法。这是Java规范中的应用程序入口。我们的main方法通过调用run方法委派到Spring Boot的SpringApplication类。SpringApplication引导着我们的应用,开始Spring,启动自动配置好了的Tomcat网络服务器。我们需要传递Examples.Class作为参数给run(),来告诉SpringApplication哪一个是Spring的主组件。另外,main()方法也接收args数组来接收命令行中的参数。

4.3.4 启动样例

这时候,你的应用应该可以工作了。因为你使用了spring-boot-starter-parent POM,你有一个很有用的“run” goal来启动应用。在项目根目录下输入命令mvn spring-boot:run来启动应用。你可以看到以下相似的输出:

$ mvn spring-boot:run

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

此时打开浏览器localhost:8080,你可以看到Hello World!的字样。
想要退出应用,按下crtl+c。

5. 创建可执行Jar包

样例的最后,我们希望能够生成一个能在生产环境下独立运行的jar包。可执行jar包(有时候也叫“fat jars”)是一个包含了你编译好了class文件和所有使用的依赖的一个档案。

可执行jar和Java
Java不提供方法来运行内嵌的jar文件(在jar包里的jar文件)。如果你想要分发一个独立的应用可能会遇到问题。
为了解决这个问题,很多开发者使用“uber”jar。一个uber jar包打爆了所有依赖使用的class到一个单一的目录下。但这样会带来另外一个问题,就是你不知道你的应用用了哪些库,而且当有同文件名时会引起冲突。
Spring Boot采用了不同解决方案,让你可以直接使用内嵌的jar文件。

为了创建一个可执行jar,你需要在pom.xml中加入spring-boot-maven-plugin,如下:

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

spring-boot-starter-parent POM包括了< executions>配置来去掉不用的包。如果你不想使用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.4.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如果你观察target目录,你可以看到myproject-0.0.1-SNAPSHOT.jar。这个文件大约10MB。如果你想要看一下里面的内容,你可以使用jar tvf

jar tvf target/myproject-0.0.1-SNAPSHOT.jar

你也可以看到一个更小的文件也在target目录下,叫做myproject-0.0.1-SNAPSHOT.jar.original。这是在Spring Boot再打包前Maven生成的原始包。

使用java -jar命令来运行:

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

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

crtl+c退出运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文档内容 一、 Spring介绍 1 1.1、SpringBoot简介 1 1.2、系统要求: 1 1.3、SpringBoot和SpringMVC区别 1 1.4、SpringBoot和SpringCloud区别 2 1.5常见错误 2 二、快速入门 2 2.1、创建一个Maven工程 2 2.2、pom文件引入依赖 3 2.3、编写HelloWorld服务 3 2.4、@RestController 4 2.5、@EnableAutoConfiguration 4 2.6 SpringApplication.run(HelloController.class, args); 4 2.7、SpringBoot启动方式1 4 2.8、SpringBoot启动方式2 4 2.9、SpringBoot启动方式3 5 三、 Web开发 5 3.1、静态资源访问 5 3.2、渲染Web页面 5 3.3、使用Freemarker模板引擎渲染web视图 6 3.3.1、pom文件引入: 6 3.3.2、后台代码 6 3.3.3、前台代码 6 3.3.4、Freemarker其他用法 7 3.3.5、Freemarker配置 8 3.4、使用JSP渲染Web视图 8 3.4.1、pom文件引入以下依赖 8 3.4.2、在application.properties创建以下配置 9 3.4.3、后台代码 9 3.5、全局捕获异常 10 四、 数据访问 10 4.1、springboot整合使用JdbcTemplate 10 4.2、springboot整合使用mybatis 12 4.3、springboot整合使用springjpa 18 4.4、springboot整合多数据源 19 五、 事物管理 25 5.1.1SpringBoot整合事物管理 25 5.1.2SpringBoot分布式事物管理 25 六、 日志管理 30 6.1使用log4j记录日志 30 6.2使用AOP统一处理Web请求日志 32 6.3Spring Boot集成lombok让代码更简洁 33 七、 缓存支持 35 7.1注解配置与EhCache使用 35 7.2使用Redis集成缓存 37 八、 热部署 37 8.1 什么是热部署 37 8.2 项目演示案例 37 8.3 热部署原理 37 8.4 Devtools依赖 38 8.5 Devtools原理 38 九、 监控管理 38 Actuator监控应用 38 Maven依赖 38 YML配置 39 Actuator访问路径 40 Admin-UI分布式微服务监控中心 40 Admin-UI-Server 40 Admin-UI-Client 41 十、 性能优化 43 组件自动扫描带来的问题 43 将Servlet容器变成Undertow 44 SpringBoot JVM参数调优 44 十一、 2.0版本新特性 45 以Java 8 为基准 45 内嵌容器包结构调整 45 Servlet-specific 的server properties调整 45 Actuator 默认映射 46 Spring Loaded不再支持 46 支持Quartz Scheduler 46 OAuth 2.0 支持 46 支持Spring WebFlux 46 版本要求 46 十二、 其他内容 47 12.1使用@Scheduled创建定时任务 47 12.2、使用@Async实现异步调用 47 12.3、自定义参数 49 12.4、多环境配置 50 12.5、修改端口号 50 12.6、SpringBoot yml 使用 50 12.7、SpringBoot整合拦截器 51 12.8、发布打包 52

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值