本文共 9487 字,大约阅读时间需要 31 分钟。
第二单元. 入门
如果你刚开始接触SpringBoot,或者Spring,从阅读这章节开始。它会回答基本的“SpringBoot是什么?”,“怎么用SpringBoot?”和“何要用SpringBoot?”问题。它包含了SpringBoot介绍,以及安装说明。然后,我们引导你构建你的第一个SpringBoot应用,并讨论一些核心原则。
8. 介绍SpringBoot
SpringBoot使创建可运行的,独立的,基于Spring的产品级应用变得简单。我们封装了Spring平台和第三方库,让你轻松入门。大部分SpringBoot应用只需要少量的配置。
你可以使用SpringBoot创建使用java-jar启动或者传统的war包部署的java应用。我们还提供运行“spring脚本”的命令行工具。
我们主要目标:
- 为所有Spring开发提供根本上更快且更广泛可理解的入门经验。
- 开箱即用,但可以根据需求快速修改默认配置。
- 提供一系统大型项目通用的非功能型特色功能(例如嵌入式服务,安全性,指标,运行状况检查和外部化部署)
- 完全没有代码生成,也不需要XML配置。
9. 系统要求
Spring Boot 2.1.5.RELEASE需要Java8并且兼容更高到Java11(包含)。或者更高版本。
为以下构建工具提供了明确的构建支持:
Build Tool | Version |
---|---|
Maven | 3.3+ |
Gradle | 4.4+ |
9.1 Servlet容器
SpringBoot支持以下嵌入式容器:
Name | Servlet Version |
---|---|
Tomcat 9.0 | 4.0 |
Jetty 9.4 | 3.1 |
Undertow 2.0 | 4.0 |
你也可以使用任何Servlet 3.1+兼容容器来部署SpringBoot应用。
10. 安装SpringBoot
SpringBoot可以和“经典”Java开发工具一起使用或作为一个命令行工具安装。不管哪种方式,你都需要JavaSDK1.8或者更高版本。当你开始之前,你可以使用以下命令来检查你当前Java安装版本:
$ java -version
如果你是Java开发新手或者你想尝试SpringBoot,则可能要先试下SpringBootCLI(命令行界面)。否则,阅读“经典”安装说明。
10.1 Java开发人员安装指南
你可以像使用标准Java库一样使用SpringBoot。在classpath下添加适当spring-boot-*.jar文件。SpringBoot不需要特定工具集成,你可以使用任何IDE或者文件编辑器。另外,SpringBoot应用没有任何特别的,你可以像其他Java程序一样运行和调试SpringBoot应用。
尽管你可以复制SpringBoot的jar包,但是我们建议你使用支持依赖关系管理的构建工具(例如Maven或Gradle)。
Maven安装
SpringBoot兼容Apache Maven 3.3或更高版本。如果尚未安装Maven,则可以按照maven.apache.org上的说明进行操作。
在很多操作系统,Maven被安装用于包管理。如果你使用OSX Homebrew,可以尝试brew install maven。Ubuntu用户可以运行sudo apt-get install maven。Windows用户可以通过Chocolatey运行choco install maven。
Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。
Chocolatey是Windows下的包管理工具。
SpringBoot依赖使用org.springframework.boot.groupId。通常,你的POM文件继承自spring-boot-starter-parent项目,依赖一个或多个“启动器”。SpringBoot支持一个可选择的Maven插件去创建可执行的jars。
下列列表展示一个经典的pom.xml文件:
4.0.0 com.example myproject 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.1.5.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin
spring-boot-starter-parent是一种很好的方式去使用SpringBoot,但是它不一定是适合所有情况。有时候你需要继承另外的父类POM,或者你不喜欢我们默认设置。如果这样,查看,提供一种使用import范围的解决方案。
org.springframework.boot spring-boot-dependencies 2.1.5.RELEASE pom import
Gradle安装
SpringBoot兼容Gradle4.4或更高版本。Gradle,则可以按照gradle.org上的说明进行操作。
SpringBoot依赖使用org.springframework.boot.group。通常,你的项目会依赖一个或多个“启动器”。SpringBoot提供一个有效的Gradle插件,它可以简化依赖声明和创建可执行的jars。
当你需要构建一个工程时,Gradel包装器提供了一种“obtaining”Gradle的好方法。它是一个小脚本和包,你可以把它们和代码一起提交,便以引导构建过程。查看细节:docs.gradle.org/4.2.1/userguide/gradle_wrapper.html
更多关于SpringBoot和Gradle的基础细节,可以查找Getting Started章节Gradle plugin’s参考指南。
10.2 SpringBoot CLI 安装
该章节忽略
10.3 升级早期版本的SpringBoot
如果你想从早期正式版本的springboot升级,查看,它提供详细的升级介绍。也可以查看,以获得每个版本的“新的和值得注意的”特性的列表。
升级到新功能版本时,一些配置可能会重命名或者被移除。SpringBoot提供一种方式去分析你应用的环境和在启动时打印诊断内容,还可以在运行时为你临时迁移属性。要启用该特性,添加下方的依赖到你的工程中:
org.springframework.boot spring-boot-properties-migrator runtime
晚添加到环境中的属性,例如使用@PropertySource时,将不被考虑。
一旦你完成迁移,请确保在你的项目依赖中移除该模块。
要升级现有的CLI安装,请使用适当的包管理器命令(例如,brew升级),或者,如果你手动安装了CLI,请遵循标准说明,记住更新您的PATH环境变量以删除任何旧的引用。
介绍migrator文章:
11. 开发你的第一个SpringBoot应用
这个章节详细介绍如何开发一个简单的“HelloWorld!”网页应用来体现springboot一些关键特征。我们使用Maven来构建这个项目,大多数IDE都支持Maven。
spring.io网站包含很多使用springboot的“入门”指南。如果你要解决特殊问题,优先从该网站找答案。
你可以通过以下快捷方式:访问start.spring.io网站通过依赖搜索来选择“Web”启动器。以此来创建一个新项目结构使你可以马上开始编程。参阅Spring Initializr文档以获得更多详细信息。
在我们开始之前,打开一个终端并且运行以下命令,来保证你有安装Java和Maven的有效版本。
$ java -versionjava version "1.8.0_102"Java(TM) SE Runtime Environment (build 1.8.0_102-b14)Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ mvn -vApache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)Maven home: /usr/local/Cellar/maven/3.3.9/libexecJava version: 1.8.0_102, vendor: Oracle Corporation
这个示例需要在它自己的文件夹中创建。后续说明是假定你已经在创建了适当的文件夹,并且它是你的当前目录。
11.1 创建POM
我们首先需要创建一个Maven的pom.xml文件。pom.xml是用于构建你工程的配方。打开你喜欢的文本编辑器添加以下内容:
4.0.0 com.example myproject 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.1.5.RELEASE
前面清单可以给你一个可用的构建。你可以通过运行mvn package来测试。(现在,你可以忽略“jar将是空的-没有内容被标记为包含”的警告)
此时,你可以导入该工程到IDE(大部分现代JavaIDE都包含对Maven的内置支持)。为了简单起见,我们在本例中继续使用纯文本编辑器。
11.2 添加classpath依赖
SpringBoot提供大量的“启动器”来让你添加jar到你的classpath。我们示例应用在pom文件的parent使用了spring-boot-starter-parent。spring-boot-starter-parent是一个特殊的启动器,它提供有用的Maven默认设置。它也提供依赖管理部分,这样你在使用“blessed”的依赖就可以忽略version标签。
因为blessed不知道如何翻译。这个功能就是当使用了或者,那在依赖它pom中的依赖时,可以忽略版本。
其他启动器也提供依赖,当你可能需要开发一个特定类型的应用。之前我们开发网页应用,我们添加了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添加spring-boot-starter-web依赖在父部分下方:
org.springframework.boot spring-boot-starter-web
如果你重新运行mvn dependency:tree,你可以看到大量附加的依赖,包含了Tomcat服务和SpringBoot。
11.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@EnableAutoConfigurationpublic class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(Example.class, args); }}
尽管这里没有太多编码,但是正在进行很多工作。我们将在接下来的几个章节中逐步介绍重要的部分。
@RestController和@RequestMapping注解
我们Example类的第一个注释是@RestController。这被称为stereotype注释。它为阅读代码的人和Spring提供了提示,提示该类起特定的作用。在这种情况下,我们的类是web @Controller,因此Spring在处理传入的Web请求时会考虑使用它。
spring中关于stereotype annotation的定义有:@Component,@Repository,@Service,@Controller
该@RequestMapping注释提供“路由”的信息。它告诉Spring任何具有/路径的HTTP请求都应映射到该home方法。该 @RestController注解告诉Spring使得到的字符串直接返回给调用者。
@RestController与@RequestMapping注解是SpringMVC的注解。(它们不是特定于SpringBoot)有关更多详细信息,请参见Spring参考文档中的 。
@EnableAutoConfiguration注解
第二个类级别注解是@EnableAutoConfiguration。这个注解告诉了SpringBoot基于你添加的jar依赖去“猜测”你打算如何配置Spring。由于spring-boot-starter-web添加Tomcat和SpringMVC,自动配置就假定你在开发一个web应用并设置spring相应配置。
自动配置被设计用于更好的服务于“Starters”,但是这两个观念没有直接的关联。你可以自由添加和选择启动器以外的jar包依赖。SprinBoot依然会尽可能的自动配置你的应用。
“main”方法
我们应用的最终部分是main方法。这是一个标准的方法,它遵循应用程序入口点的Java约定。我们main方法委托SpringBoot的SpringApplicaiton类调用run方法。SpringApplication引导我们应用,启动Spring,这反过来又启动了自动配置的TomcatWeb服务器。我们需要通过Excmple.class作为一个参数到run方法来告诉SpringApplication,哪个是主要的Spring组件。args数组也传递公开命令行参数。
11.4 运行Excmple
这个时候,你的应用程序应该可以工作。之前你使用了spring-boot-starter-parent的POM,你有一个有用的run目标,你可以用来启动应用程序。在项目根目录输入mvn spring-boot:run来启动应用程序。你应该可以看到类似以下的输出:
$ mvn spring-boot:run . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =|_||___/=/_/_/_/ :: Spring Boot :: (v2.1.5.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.222 seconds (JVM running for 6.514)
如果你通过web浏览器访问localhost:8080,你应该可以看到以下的输出:
Hello World!
要正常退出该应用程序,请按ctrl-c。
11.5 创建可执行jar
我们创建一个在生产环境中完全独立可执行的jar文件来结束我们的示例。可执行jar(有时候称“fatjars”)是包含你所有已编译的class文件以及代码运行所依赖的jar包的归档文件。
Java没有提供一种标准的方式去加载嵌套的jar文件(jar中本身包含的jar文件)。如果你要发布一个自包含的应用,可能会有问题。
为了解决这个问题,很多开发者使用了“uber”jar。unberjar将应用程序所有依赖项的类文件打包成一个单独的归档。这种方法的问题在于,很难查看应用程序中包含哪些库。如果在多个jar中使用相同的文件名(但具有不同的内容),也可能会产生问题。
SpringBoot采用,实际上允许你直接嵌套jar。
要创建可执行jar包,我们需要添加spring-boot-maven-plugin到我们的pom.xml中。为此,在你的依赖部分下方插入以下行:
org.springframework.boot spring-boot-maven-plugin
spring-boot-starter-parent的POM包含了配置去绑定repackage目标。如果你不用父级的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.5.RELEASE:repackage (default) @ myproject --[INFO] -----------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ----------------------------------------------------------------------
如果你查看targer目录,你应该可以看到myproject-0.0.1-SNAPSHOT.jar。这个文件差不多10MB。如果你要窥视内部,你可以使用jar tvf,如下:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
你应该可以在targer目录看到更小的文件myproject-0.0.1-SNAPSHOT.jar.original。这是Maven在SpringBoot重新打包之前创建的原始jar文件。
要运行该应用程序,请使用以下java -jar命令:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =|_||___/=/_/_/_/ :: Spring Boot :: (v2.1.5.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.536 seconds (JVM running for 2.864)
要退出该应用程序,请按ctrl-c。
转载地址:https://blog.csdn.net/XiaMen_BuYu/article/details/105425098 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!