本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(3)

Spring Boot微服务项目实战(第2版)学习笔记-第1章第一个Spring Boot项目

发布于2021-03-13 14:35     阅读(1284)     评论(0)     点赞(29)     收藏(0)


Spring Boot是目前流行的微服务框架,倡导“约定优先于配置”,其设计目的是用来简化新Spring应用的初始化搭建以及开发过程。SpringBoot提供了很多核心的功能,比如自动化配置、提供starter简化Maven配置、内嵌Servlet容器、应用监控等功能,让我们可以快速构建企业级应用程序。

本章主要介绍开始学习Spring Boot之前的环境准备,如何一分钟快速搭建Spring Boot,Spring Boot文件目录简单介绍,以及Maven Helper插件的安装和使用等内容。

Spring Boot开发环境准备(IDEA可未开发做完全部的准备)

在开始学习Spring Boot之前,我们需要准备好开发环境。本节将以Windows操作系统为例,介绍如何安装JDK、Intellij IDEA及ApacheMaven。如果你的电脑上已经安装了JDK、Intellij IDEA或者ApacheMaven,可以跳过本节内容。

安装JDK(本处直接在IDEA中安装JDK,无需书中步骤)

JDK(Java SE Development Kit)建议使用1.8及以上的版本,其官方下载路径为:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。大家可以根据自己Windows操作系统的配置选择合适的JDK1.8安装包,这里就不过多描述。

软件下载完成之后,双击下载软件,出现安装界面。一路单击【下一步】按钮即可完成安装。这里笔者把JDK安装在C:\ProgramFiles\Java\jdk1.8.0_77下。

安装完成后,需要配置环境变量JAVA_HOME,具体步骤如下:

在电脑桌面上,右击【我的电脑】→【属性】→【高级系统设置】→【环境变量】→【系统变量(S)】→【新建】出现新建环境变量的窗口。

在【变量名】和【变量值】中分别输入JAVA_HOME和C:\Program Files\Java\jdk1.8.0_77,单击【确定】按钮。

JAVA_HOME配置好之后,将%JAVA_HOME%\bin加入到【系统变量】的path中。完成后,打开命令行窗口,输入命令java-version,如出现图所示的提示,即表示安装成功。

tips:JDK安装路径最好不要出现中文,否则会出现意想不到的结果。

安装Intellij IDEA

在Intellij IDEA的官方网站http://www.jetbrains.com/idea/上可以免费下载IDEA。下载完IDEA后,运行安装程序,按提示安装即可。本书使用Intellij IDEA 2016.2版本,当然大家也可以使用其他版本的IDEA,只要版本不要过低即可。安装成功之后,打开软件界面。

安装Apache Maven(本处直接在IDEA中安装)

Apache Maven是目前流行的项目管理和构建自动化工具。虽然IDEA已经包含了Maven插件,但是笔者还是希望大家在工作中能够安装自己的Maven插件,方便以后项目配置需要。大家可以通过Maven的官方网站http://maven.apache.org/download.cgi下载最新版的Maven,本书的Maven版本为apache-maven-3.5.0。

下载完成后解压缩即可,例如,解压到D:盘上,然后将Maven的安装路径D:\apache-maven-3.5.0\bin加入到Windows的环境变量path中。安装完成后,在命令行窗口执行命令:mvn-v,如果输出如图所示的页面,表示Maven安装成功。
在这里插入图片描述

接下来,我们要在Intellij IDEA下配置Maven,具体步骤如下:

  1. 在Maven安装目录,即D:\apache-maven-3.5.0下新建文件夹repository,用来作为本地仓库。
  2. 在Intellij IDEA界面中,选择【File】→【Settings】,在出现的窗口中找到Maven选项,分别把【Maven home directory】【Usersettings file】【Local repository】,设置为我们自己Maven的相关目录,如图所示。
  1. 设置完成后,单击【Apply】→【OK】。至此,Maven在Intellij IDEA的配置完成。

这里需要注意的是,之所以把Maven默认仓库(C:${user.home}.m2\respository)的路径改为我们自己的目录(D:\apache-maven-3.5.0\repository),是因为respository仓库到时候会存放很多的jar包,放在C盘影响电脑的性能,所以才会修改默认仓库的位置。

一分钟快速搭建Spring Boot项目

使用Spring Initializr新建项目

使用Intellij IDEA创建Spring Boot项目有多种,比如Maven和SpringInitializr方式。这里只介绍Spring Initializr这种方式,因为这种方式不但可为我们生成完整的目录结构,还可为我们生成一个默认的主程序,节省时间。

  1. 在Intellij IDEA界面中,单击【File】→【New】→【Project】,在弹出的窗口中选择【Spring Initializr】选项,在【Project SDK】选择JDK的安装路径,如果没有则新建一个,单击【Next】按钮。
  1. 选择【Spring Boot Version】,这里按默认版本(本书使用的Spring Boot版本为2.1.6)即可。勾选【web】→【Spring WebStarter】选项,然后单击【Next】按钮,如图所示。
  1. 输入项目名称【spring-boot-book-v2】和项目存放目录,其他默认即可,然后单击【Finish】按钮。至此,一个完整的Spring Boot项目即创建完成,具体如图所示。
  1. 单击【NewWindow】表示在新的窗口打开项目,单击【This Window】表示在当前窗口打开项目,我们选择【New Window】按钮即可。

  2. 在IDEA开发工具上,找到刷新依赖的按钮(Reimport AllMaven Projects),下载相关的依赖包,这时开发工具开始下载SpringBoot项目所需的依赖包,如图所示。

至此,Spring Boot项目创建完成

tips:下载Spring Boot依赖包是一个相对漫长的过程,可以去喝杯茶休息一会儿。

测试

Spring Boot项目创建完成之后,找到入口类DemoApplication中的main方法并运行。当看到如图所示,表示项目启动成功。同时还可以看出项目启动的端口(8080)及启动时间。

Spring Boot三种启动方式

  1. 使用DemoApplication中的main方法启动SpringBoot
@SpringBootApplication
public class DemoApplication {
	public static void main(String[] args){
		SpringApplication.run(DemoApplication.class, args);
	}
}
  1. 在Spring Boot应用的根目录下运行mvn spring-boot:run
### 在命令行窗口执行mvm spring-boot:run命令
mvm spring-boot:run
  1. 使用java-jar命令
### java -jar xxx.jar命令
java -jar demo-0.0.1-SNAPSHOT.jar

Spring Boot文件目录介绍

创建Spring Boot项目后,会产生一个工程目录,该工程目录存放了工程项目的各种文件,对于Spring Boot开发人员来说,了解该工程目录非常必要。

工程目录

在这里插入图片描述

  • /src/main/java:目录下放置所有的Java文件(源代码文件)
  • /src/main/resources:用于存放所有的资源文件,包括静态资源文件、配置文件、页面文件等。
  • /src/main/resources/static:用于存放各类静态资源。
  • /src/main/resources/templates:用于存放模板文件,如Thymeleaf模板文件。
  • /src/main/resources/application.properties:配置文件,这个文件非常重要。Spring Boot默认支持两种配置文件类型(.properties和.yml
  • /src/test/java:放置单元测试类java代码。
  • /target:放置编译后的.class文件和配置文件等。

Spring Boot将很多配置文件进行了统一管理,且配置了默认值。SpringBoot会自动在/src/main/resources目录下找application.properties或者application.yml配置文件,找到后将运用此配置文件中的配置,否则使用默认配置。这两种类型的配置文件有其一即可,也可以两者并存。两者的区别如下:

application.properties和application.yml配置文件的区别主要是书写格式不同,另外,application.yml格式不支持@PropertySource注解导入配置。

Tips:.properties配置文件的优先级高于.yml。在.properties文件中配置了server.port=8080,同时,在.yml配置了server.port=8090,SpringBoot将使用.properties中的8080端口。

入口类

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 //入口类
 @SpringBootApplication
public class DemoApplication {
	public static void main(String[] args){
		SpringApplication.run(DemoApplication.class, args);
	}
}
  • @SpringBootApplication:是一个组合注解,包含@EnableAutoConfiguration、@ComponentScan和@SpringBootConfiguration三个注解,是项目启动注解。如果我们使用这三个注解,项目依旧可以启动起来,只是过于烦琐。此时,可用@SpringBootApplication简化。

@SpringBootApplication = @EnableAutoConfiguration + @ComponentScan + @SpringBootConfiguration

  • SpringApplication.run:应用程序开始运行的方法。

Tips: 入口类需要放置在包的最外层,以便能够扫描到所有子包中的类。

测试类

Spring Boot的测试类主要放置在/src/test/java目录下面。项目创建完成后,Spring Boot会自动为我们生成测试类DemoApplicationTests.java,测试类的代码如下:

package com.example.demo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests{
	@Test
	public void contextLoads ()
	}
}
  • @RunWith(SpringRunner.class):@RunWith(Parameterized.class)是一个参数化运行器,可用于配合@Parameters使用JUnit的参数化功能。查源代码可知,SpringRunner类是继承的SpringJUnit4ClassRunner类,此处表明使用SpringJUnit4ClassRunner执行器,此执行器集成了Spring的一些功能。如果只是简单的JUnit单元测试,该注解可以去掉。
  • @SpringBootTest:此注解能够测试我们的SpringApplication,因为Spring Boot程序的入口是SpringApplication,基本上所有配置都会通过入口类去加载,而该注解可以引用入口类的配置。
  • @Test:JUnit单元测试的注解,注解在方法上表示一个测试方法。

当我们右键执行DemoApplicationTests.java中的contextLoads方法的时候,大家可以看到控制台打印的信息和执行入口类中的SpringApplication.run()方法,打印的信息是一致的。由此便知,@SpringBootTest是引入了入口类的配置。

pom文件

Spring Boot项目下的pom.xml文件主要用来存放依赖信息,具体代码如下(部分代码已省略):

  • spring-boot-starter-parent:是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。
  • spring-boot-starter-web:只要将其加入到项目的maven依赖中,我们就会得到一个可执行的Web应用。该依赖中包含许多常用的依赖包,比如spring-web、spring-webmvc等。这样,我们不需要做任何Web配置,便能获得相关Web服务。
  • spring-boot-starter-test:这个依赖和测试相关,只要引入它,就会把所有与测试相关的包全部引入。
  • spring-boot-maven-plugin:这是一个Maven插件,能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供执行Maven操作的可能,并能够将Spring Boot应用打包为可执行的jar或war文件。

Spring Boot 2.x新特性

配置变更

在2.x中废除了一些1.x中的配置,并增加了许多新配置,详细请查看以下链接中的变更表格

第三方类库升级

Spring Boot 2.x对第三方类库升级了所有能升级的稳定版本,一些值得关注的类库升级如下:

  1. Spring Framework5+
  2. Tomcat8.5+
  3. Flyway5+
  4. Hibernate5.2+
  5. Thymeleaf3+

Spring Boot 2.x至少需要JDK8的支持,2.x应用了JDK8的许多高级新特性,所以当应用要升级到2.0版本时,先确认应用必须兼容JDK8。另外,2.x开始了对JDK9的支持。

HTTP/2支持

提供对HTTP/2的支持,如Tomcat、Undertow、Jetty,该功能依赖具体选择的应用服务器和应用环境。

响应式Spring编程支持

2.x通过启动器和自动配置全面支持Spring的响应式编程,响应式编程是完全异步和非阻塞的,它是基于事件驱动模型,而不是传统的线程模型。就连Spring Boot内部也对一些功能点进行了有必要的响应式升级,最值得注意的是对内嵌式容器的支持。

对响应式编程支持又包括以下几个技术模块:

  • Spring WebFlux & WebFlux.fn支持。
  • 响应式Spring Data支持。
  • 响应式Spring Security支持。
  • 内嵌式的Netty服务器支持。

其他新特性

除了前面几节列出的变化外,还包括其他新特性:

  1. 全面重写了Spring Boot的Gradle插件,并且最小支持Gradle4+,以便提供一些重要的特性提升。
  2. 2.x开始提供对Kotlin1.2的支持,并且提供了一个runApplication函数来运行Spring Boot应用。
  3. 在2.x中,对执行器端点进行了改进,所有的HTTP执行端点都暴露在/actuator路径下,并对JSON结果集也做了改善。
  4. 2.x默认使用HikariCP连接池。
  5. 提供了一个spring-boot-starter-json启动器对JSON读写的支持。
  6. 2.x提供了一个spring-boot-starter-quartz启动器对定时任务框架Quartz的支持。
  7. 所有支持的容器都支持过滤器的初始化。

Maven Helper插件的安装和使用

Maven Helper是一款可以方便查看Maven依赖树的插件,可以在IntellijIDEA上安装使用它。它支持多种视图来查看Maven依赖,同时可以帮助我们分析pom文件中的依赖是否存在冲突,方便快速定位错误。

Maven Helper插件安装

安装Maven Helper插件很简单,在菜单栏选择【File】→【Settings】→【Plugins】,在搜索框中输入【Maven Helper】,然后单击【Install】安装即可。安装成功之后重启Intellij IDEA即可使用。

Maven Helper插件使用

插件安装成功之后打开pom文件,我们看到除了Text视图外,多了一个Dependency Analyzer视图。

  • Conflicts:查看所有有冲突的依赖包,如果存在冲突,会显示红色,同时会在右侧显示视图。我们可以单击有冲突的包,【右键】→【Exclude】来排除冲突,通过【右键】→【Jump ToSource[F12]】可以跳转到源代码。
  • All Dependencies as List:以列表方式显示所有的依赖包。
  • All Dependencies as Tree:以树形方式显示所有的依赖包。

原文链接:https://blog.csdn.net/thezapple/article/details/114685365



所属网站分类: 技术文章 > 博客

作者:哦哦好吧

链接:http://www.javaheidong.com/blog/article/114398/63dfe675df7cc94118a7/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)