聊聊Spring boot2.X开发环境搭建和基本开发

简介:

对Spring Boot的开发环境进行搭建,并对它的特点做进一步的了解,才能更好地对Spring Boot有更深入的介绍。但是无论如何都需要先来搭建Spring Boot的工程。

搭建Spring Boot开发环境

使用Spring Boot,首先需要搭建一个快速开发的工程环境。Spring Boot工程的创建存在多种方式,但是因为当前Eclipse和IntelliJ IDEA这两种IDE的广泛应用,所以本书只介绍这两种IDE环境下的搭建。

搭建Eclipse开发环境

首先找到Eclipse的菜单Help→Eclipse Marketplace,打开这个菜单后,可以看到一个新的窗口,然后选择标签页Popular,从中找到Spring Tool Suite(STS)的插件,如图1-1所示。

这样就可以点击安装STS插件了,通过它可以很方便地引入Spring Boot的starter,而starter会引入对应的依赖包和服务器,这样就能够帮助我们快速地搭建开发环境。

下面让我们使用它创建一个工程。首先点击熟悉的菜单File→New→Project,然后输入spring过滤一些无关的内容,再选用Spring Starter Project,点击Next,创建项目,如图1-2所示。

于是它会再打开一个新的对话框,如图1-3所示。

图2-3中画框的地方是我根据自己需要进行的自定义,其中选择了使用War形式的打包,这意味着将使用的是一个带有JSP工程的项目。在实际的操作中,读者也需要根据自己的情况来定义它们。做完这些工作后,就可以点击Next进行下一步了,这样它又会弹出另外一个窗口,如图1-4所示。

​图1-1 安装STS插件

图1-2 创建Spring Boot工程

图1-3 配置Spring Boot工程

图1-4 选择依赖的starter

这里选择AOP和Web,只是做最简单的项目而已,因此没有引入太多的内容。在现实的开发中,可能还需要选择NoSQL开发工具,如Redis、MongoDB等,还有数据库,如MySQL,以及持久层Hibernate或者MyBatis等项目的依赖,这些都是开发中经常用到的。当你选中所需要的包后,就可以直接点击Finish,这个时候一个新的Spring Boot工程就建好了,如图1-5所示。

图1-5 新的Spring Boot工程

从图1-5可以看到它是一个Maven项目,其中pom.xml文件已经建好,而且给我们创建了带有main方法的Chapter2Application.java文件和初始化Servlet的ServletInitializer.java文件。这里通过Chapter2Application就可以运行Spring Boot工程了。下面再打开工程中的pom.xml文件,就可以看到这些代码,如代码清单1-1所示。

代码清单1-1 项目中的pom.xml文件

​这些代码是STS插件根据你选择的starter依赖来创建的,这样关于Eclipse搭建的开发环境就结束了。此时只需要使用Java Application的形式运行Chapter2Application就可以启动Spring Boot项目。

搭建IntelliJ IDEA开发环境

首先是启动IntelliJ IDEA开发环境,然后选择Create New Project,就可以看到一个新的窗口。我们选择Spring Initializr,并且将JDK切换为你想要的版本,如图1-6所示。​

​图1-6 使用IntelliJ IDEA创建Spring Boot工程

点击Next,也会弹出另外一个窗口,它将允许我们进行一定的配置,如图1-7所示。

图1-7 配置Spring Boot项目

同样,图中加框的地方是我根据自己的需要进行修改的内容。注意,这里还是选择了以War打包的形式,然后点击Next,又到了可以选择starter的窗口,如图1-8所示。

图1-8 选择对应的starter

也与Eclipse一样,可以根据自己的需要选择对应的starter进行依赖,IntelliJ IDEA也会为你建好工程,如图1-9所示。

你也可以看到一个建好的类Chapter2Application、ServletInitializer和Maven的pom.xml文件。运行Chapter2Application就可以启动Spring Boot工程,而pom.xml则配置好了你选中的starter依赖,这样就能够基于IntelliJ IDEA开发Spring Boot工程了。

图1-9 IntelliJ IDEA创建Spring Boot工程

到这里,如果你想使用Jetty或者Undertow作为服务器,又或者说你想切换后台日志中的商标,那么可以参考附录中的内容。

Spring Boot的依赖和自动配置

在上节中已经介绍了如何搭建Spring Boot工程,下面需要讨论它为什么在很少的配置下就能够运行。

下面以最常用的Spring MVC为例进行说明。首先打开Maven的本地仓库,找到对应Spring Boot的文件夹,可以看到图1-10所示的目录。

图1-10 Spring Boot的Maven本地仓库

这里先谈spring-boot-start-web的内容,未来还会谈到spring-boot-autoconfigure文件夹的内容,所以图 1-10 中一并加了框。打开spring-boot-start-web文件夹,就可以看到一个名为spring-boot- starter-web-2.0.0.RELEASE.pom的文件,打开它就可以看到代码清单1-2所示的代码。

代码清单1-2 spring-boot-starter-web的pom.xml文件

​代码中的中文注释是我加入的。从这里可以看出,当加入spring-boot-starter-web后,它会通过Maven将对应的资源加载到我们的工程中,这样便能够形成依赖。但是这样还不足以运行Spring MVC项目,要运行它还需要对Spring MVC进行配置,让它能够生产Spring MVC所需的对象,才能启用Spring MVC,所以还需要进一步探讨。

为了探讨Spring MVC在Spring Boot自动配置的问题,首先在本地下载的Maven仓库的目录spring-boot-autoconfigure中找到

spring-boot-autoconfigure-2.0.0.RELEASE-sources.jar的包。它是一个源码包,把它解压缩出来,打开它目录下的子目录后,我们就可以看到许多配置类,如图2-11所示。

​图1-11 Spring Boot的默认配置类

这里可以看到存在很多的类,其中加框的类DispatcherServletAutoConfiguration就是一个对DispatcherServlet进行自动配置的类。因为本书不是源码分析的书,所以不对注解这些内容进行深入的探讨,只是截取DispatcherServletAutoConfiguration源码中的一个内部类DispatcherServletConfiguration对Spring Boot的自动配置做最基本的讲解,如代码清单1-3所示。

代码清单1-3 部分源码分析

​注意上述代码中加粗注解的注释,这些中文注释是我加入的,为的是更好地说明Spring Boot的自动配置功能。通过上面的代码,可以看到Spring Boot内部已经自动为我们做了很多关于DispatcherServlet的配置,其中的@EnableConfigurationProperties还能够在读取配置内容的情况下自动生成Spring MVC所需的类,有关这些内容的讨论可以参考附录。到这里,应该明白为什么几乎在没有任何配置下就能用Spring Boot启动Spring MVC项目,这些都是Spring Boot通过Maven依赖找到对应的jar包和嵌入的服务器,然后使用默认自动配置类来创建默认的开发环境。但是有时候,我们需要对这些默认的环境进行修改以适应个性化的要求,这些在Spring Boot中也是非常简单的,正如@EnableConfigurationProperties注解那样,它允许读入配置文件的内容来自定义自动初始化所需的内容,下节将探讨这个问题。

使用自定义配置

上节讨论了Spring Boot存在自动装配组件和自定义的配置,这些它都给予了开发者默认的约定配置项。关于这些内容,可以在它公布的网址上看到所有的配置项,网址是http://docs.spring.io/spring- boot/docs/current-SNAPSHOT/reference/htmlsingle/#appendix。这些配置项多达300多项,所以十分繁复,好在我们并不需要全部去配置,只是根据自己工程的需要引入对应的starter,对其进行必要的配置就可以了。

本书不会像流水账那样罗列这些配置项,因为这些很无趣也没有必要,而只是根据讲解的需要,引入对应的stater,才会讨论对应的配置项。将来在讨论数据库、NoSQL等内容时,才会讨论对应的配置项。这里需要我们记住的是通过这些约定的配置就可以在很大程度上自定义开发环境,以适应真实需求。这就是Spring Boot的理念,配置尽量简单并且存在约定,屏蔽Spring内部的细节,使得Spring能够开箱后经过简单的配置后即可让开发者使用,以满足快速开发、部署和测试的需要。

如果你按照上述使用Eclipse或者IntelliJ IDEA进行新建工程,那么可以在项目中发现它还会为你创建一个属性文件application.properties,如图2-12所示。

它是一个默认的配置文件,通过它可以根据自己的需要实现自定义。例如,假设当前8080端口已经被占用,我们希望使用8090端口启动Tomcat,那么只需要在这个文件中添加一行:

图1-12 Spring Boot的配置文件

这样以Java Application的形式运行Chapter2Application就可以看到Spring Boot绑定的Tomcat的启动日志:

​注意,通过加粗的这行日志可以看到Tomcat是以8090端口启动的,相信读者明白了。也就是说,我们只需要修改配置文件,就能将开发的默认配置变为自定义配置。

事实上,Spring Boot的参数配置除了使用properties文件之外,还可以使用yml文件等,它会以下列的优先级顺序进行加载:

命令行参数;

来自java:comp/env的JNDI属性;

Java系统属性(System.getProperties());

操作系统环境变量;

RandomValuePropertySource配置的random.*属性值;

jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件;

jar包内部的application-{profile}.properties或application.ym(带spring.profile)配置文件;

jar包外部的application.properties或application.yml(不带spring.profile)配置文件;

jar包内部的application.properties或application.ym(不带spring.profile)配置文件;

@Configuration注解类上的@PropertySource;

实际上,yml文件的配置与properties文件只是简写和缩进的差别,因此差异并不大,所以本书统一使用properties文件进行配置。对于需要使用yml文件的读者,只是需要稍加改动即可。

开发自己的Spring Boot项目

上面我们修改了服务器的启动端口,有时候还需要修改Spring MVC的视图解析器(ViewResolver)。Spring MVC的视图解析器的作用主要是定位视图,也就是当控制器只是返回一个逻辑名称的时候,是没有办法直接对应找到视图的,这就需要视图解析器进行解析了。在实际的开发中最常用的视图之一就是JSP,例如,现在控制器中返回一个字符串“index”,那么我们希望它对应的是开发项目的/WEB-INF/jsp/index.jsp文件。如果你还对Spring MVC不熟悉,那也没有关系,未来我们还会谈到它,这里的代码很简单,你只需要依葫芦画瓢就可以体验运行Spring Boot项目了。下面的主要任务就是如果通过Spring Boot完成这个功能。首先我们需要在Maven的pom.xml中加入JSP和JSTL的依赖包,如代码清单1-4所示。

代码清单1-4 新增JSP和JSTL的Maven依赖配置

​为了配置视图解析器(ViewResolver),将application.properties文件修改为如代码清单`-5所示。

代码清单1-5 定义视图前后缀

​这里的spring.mvc.view.prefix和spring.mvc.view.suffix是Spring Boot与我们约定的视图前缀和后缀配置,意思是找到文件夹/WEB-INF/jsp/下以.jsp为后缀的JSP文件,那么前缀和后缀之间显然又缺了一个文件名称,在Spring MVC机制中,这个名称则是由控制器(Controller)给出的,为此新建一个控制器IndexController,其代码如代码清单1-6所示。

代码清单1-6 开发控制器

​这里定义了一个映射为/index的路径,然后方法返回了“index”,这样它就与之前配置的前缀和后缀结合起来找对应的jsp文件,为此我们还需要开发一个对应的jsp文件,为此我们先再建一个/webapp/WEB-INF/jsp/index.jsp文件,如代码清单1-7所示。

代码清单1-7 开发视图(/webapp/WEB-INF/jsp/index.jsp)

​这样我们就完成了一个简单的控制器,并且让视图解析器找到视图的功能。从上面来看定义视图解析器,在Spring Boot中只需要通过配置文件定义视图解析器的前后缀即可,而无须任何代码,这是因为Spring Boot给了我们自定义配置项,它会读入这些自定义的配置项,为我们生成Spring MVC中的视图解析器。正如它所承诺的尽可能地配置Spring开发环境,然后再看到即将运行Chapter2Application.java文件,如代码清单1-8所示。

代码清单1-8 Spring Boot运行文件Chapter2Application

​这里的注解@SpringBootApplication标志着这是一个Spring Boot入门文件。加粗的代码则是以Chapter2Application类作为配置类来运行Spring Boot项目,于是Spring Boot就会根据你在Maven加载的依赖来完成运行了。接下来我们以Java Application的形式运行类Chapter2Application,就可以看到Tomcat的运行日志。由于已经把端口修改为了8090,因此打开浏览器后输入http://localhost:8090/index,就可以看到运行的结果如图1-13所示。

​图1-13 测试视图解析器

这样我们就搭建完成Spring Boot的开发环境了。因为Spring Boot是基于Spring原理基础之上的,所以在讨论Spring Boot时,也十分有必要介绍Spring的技术原理,这样才能知其然,亦知其所以然。这些是后续章节的任务了。

《深入浅出Spring Boot 2.x》

杨开振 著

Spring框架是Java EE开发的事实标准,而Spring Boot是业界最流行的微服务开发框架。本书从一个最简单的工程开始讲解Spring Boot企业级开发,其内容包含全注解下的Spring IoC和AOP、数据库编程、数据库事务、NoSQL技术、Spring MVC、Spring 5新一代响应式框架WebFlux、REST风格和Spring Cloud分布式开发等。

扫码关注我们

在“异步社区”后台回复“关注”,即可免费获得2000门在线视频课程

相关文章
|
4月前
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
330 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
3月前
|
人工智能 Java 数据库
飞算 JavaAI:革新电商订单系统 Spring Boot 微服务开发
在电商订单系统开发中,传统方式耗时约30天,需应对复杂代码、调试与测试。飞算JavaAI作为一款AI代码生成工具,专注于简化Spring Boot微服务开发。它能根据业务需求自动生成RESTful API、数据库交互及事务管理代码,将开发时间缩短至1小时,效率提升80%。通过减少样板代码编写,提供规范且准确的代码,飞算JavaAI显著降低了开发成本,为软件开发带来革新动力。
|
3月前
|
前端开发 Java UED
从基础到进阶:Spring Boot + Thymeleaf 整合开发中的常见坑与界面优化
本文深入探讨了 **Spring Boot + Thymeleaf** 开发中常见的参数绑定问题与界面优化技巧。从基础的 Spring MVC 请求参数绑定机制出发,分析了 `MissingServletRequestParameterException` 的成因及解决方法,例如确保前后端参数名、类型一致,正确设置请求方式(GET/POST)。同时,通过实际案例展示了如何优化支付页面的视觉效果,借助简单的 CSS 样式提升用户体验。最后,提供了官方文档等学习资源,帮助开发者更高效地掌握相关技能。无论是初学者还是进阶用户,都能从中受益,轻松应对项目开发中的挑战。
117 0
|
25天前
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
106 0
|
3月前
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文详细讲解了Java开发者如何基于Spring AI Alibaba框架玩转MCP(Model Context Protocol),涵盖基础概念、快速体验、服务发布与调用等内容。重点包括将Spring应用发布为MCP Server(支持stdio与SSE模式)、开发MCP Client调用服务,以及在Spring AI Alibaba的OpenManus中使用MCP增强工具能力。通过实际示例,如天气查询与百度地图路线规划,展示了MCP在AI应用中的强大作用。最后总结了MCP对AI开发的意义及其在Spring AI中的实现价值。
1151 10
|
3月前
|
人工智能 缓存 自然语言处理
保姆级Spring AI 注解式开发教程,你肯定想不到还能这么玩!
这是一份详尽的 Spring AI 注解式开发教程,涵盖从环境配置到高级功能的全流程。Spring AI 是 Spring 框架中的一个模块,支持 NLP、CV 等 AI 任务。通过注解(如自定义 `@AiPrompt`)与 AOP 切面技术,简化了 AI 服务集成,实现业务逻辑与 AI 基础设施解耦。教程包含创建项目、配置文件、流式响应处理、缓存优化及多任务并行执行等内容,助你快速构建高效、可维护的 AI 应用。
|
6月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
1733 17
Spring Boot 两种部署到服务器的方式
|
4月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
113 0