搭建Spring Boot开拓环境

利用Spring Boot,首先须要搭建一个快速开拓的工程环境。

搭建Eclipse开拓环境

maven项目怎么导入jsp需要的包聊聊Spring boot2X开辟情况搭建和根本开辟 Node.js

首先找到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的技能事理,这样才能知其然,亦知其以是然。