聊聊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门在线视频课程

原文地址:http://blog.51cto.com/13127751/2155108

时间: 2024-10-12 13:38:54

聊聊Spring boot2.X开发环境搭建和基本开发的相关文章

SpringMVC+Spring3+hibernate4 开发环境搭建以及一个开发实例教程

刚刚接触了SpringMVC这个框架,因此有必要把它拿过来同hibernate.Spring框架进行集成和开发一个实例,在真正企业从头开发的项目中往往一个稳定的开发环境至关重要,开发一个项目选择什么样的搭建平台也需要有经验才可以,并不是说你会搭建一个开发平台然后公司就会用你搭建的开发平台,一个项目或者一个公司看中的也不是你可以搭出框架,而是在这个框架使用过程中出现的各种问题你可以解决掉. 也就是说呢,无论开发什么项目要做到稳定.环境稳定.开发成本稳定.技术稳定.换句话说就是"风险可控"

Windows下Node.js开发环境搭建-合适的开发环境

1)生产环境中的Node.js应用 Windows + Linus 2)虚拟机工具 VirtualBox 虚拟机CentOS安装 3)xShell与xFtp(windows到linux文件传输) 4)Linux安装 Node.js MogoDB Redis 5)Windows开发工具 Sublime Text WebStorm

android开发环境搭建(for 驱动开发人员)

前言 一.android驱动的开发流程 1: 写LINUX驱动 2: 写LINUX应用测试程序 3: 写JNI接口,用来包装第二步写的应用 (要用NDK来编译) 生成一个.SO文件,相当于CE下的DLL 4: 写JAVA程序,专门写一个类包含.SO文件,然后在JAVA里调用.SO里的函数. 例子,可以看NDK里面的Sample文件夹,里面有一些例子 二. 需要安装的环境 编译Android的LINUX交叉编译工具 编译LINUX驱动的交叉编译工具(4.3.1) 编译JNI的工具包:NDK(在LI

spring mvc(一)开发环境搭建和HelloWorld程序

Spring MVC 3提供了基于注解.REST风格等特性,有些方面比Struts 2方便一些. 这里进行Spring MVC 3的开发环境搭建,即开发Hello World程序. 1,拷贝Spring MVC 3类库到WEB-INF/lib下,经测试至少需要如下几个,版本为Spring 3.1.1: org.springframework.asm-3.1.1.RELEASE.jar org.springframework.beans-3.1.1.RELEASE.jar org.springfr

PCI/PCIe接口卡Windows驱动程序(1)-WDF概述及开发环境搭建

本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法. 这个系列的博客将首先用一个篇幅为不懂Windows 下PCI/PCIe驱动开发的介绍WDF和开发环境搭建,接下来几篇将直接讲述程序编写, 看完这几篇后,希望能够帮助读者了解如何通过500行左右的代码实现一个标准的PCIe接口卡驱动程序. 毕设题目的PCIe板卡是BAR0下映射两个5K的内存,偏移地址为0x20000和0x22000,源代码在: https://github.com/luluji

mybatis实战教程(mybatis in action)之一:开发环境搭建

文章转载自http://www.yihaomen.com/article/java/302.htm 什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想无论是用过的hibernate,myb

手把手教你做安豆计算器(一)-开发环境搭建与部署

前言 很多同学想学安卓应用开发,但是还没有开始就遇到了很多问题,比如资源无法下载,环境搭建遇到问题,代码不知该从何处写起.从0到1的过程让新手们抓狂. 于是我们写了这篇操作性强,手把手教你应用开发的教程,帮助准备开始学习安卓应用开发的同学.万事开头难,把开始的第一只拦路虎解决掉,以后的路就越走越宽了. 本文将从一个实用的例子-"计算器"应用入手,向准备学习安卓开发的新手介绍安卓应用开发的整个过程–包括开发环境的搭建,程序的部署,界面设计,功能实现等等. 当完成这个"计算器&q

传智播客C/C++各种开发环境搭建视频工具文档免费教程

传智播客作为中国IT培训的领军品牌,一直把握技术趋势,给大家带来最新的技术分享!传智播客C/C++主流开发环境免费分享视频文档中,就有写一个helloworld程序的示范.火速前来下载吧 所谓"工欲善其事,必先利其器". 欲学C/C++,必先搭建好开发环境,欲成为C/C++高手,必先跑起来helloworld! C/C++ IDE仅仅是工具--剑,C/C++语言就是剑法.欲雄霸天下,必须精通各种剑,精通各路剑法.请大家认真关注http://c.itcast.cn最新技术视频. (有图有

【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,如果对这个课程有兴趣的,可以加我的QQ2059055336和我联系. 课程内容简介 本课程重点是给大家讲解嵌入式linux系统移植的开发方法,采用理论与实践,硬件与软件相结合的方法. 1.在每节开始之前先简单回顾上一节所讲的主要内容,并对本节所讲的内容先进行概述,讲解概念.技术要点,设计实现思路等内容,最后总结本次课程的要掌握的要点. 2.在讲课的过程中对关键技术