本书不会像流水账那样罗列这些配置项 , 因为这些很无趣也没有必要 , 而只是根据讲解的需要 , 引入对应的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所示 。
推荐阅读
- 扒一扒Spring家族的前世今生
- 聊聊Java中的异常及处理
- 聊聊服务灾备
- 聊聊DOS操作系统中的文件系统FAT12
- 一文搞懂 Spring JPA
- 一 当用SpringApplication.run的时候发生了什么
- Spring简单入门教程(二)spring的体系结构
- Spring启动原理和可扩展设计分析
- 建议收藏学习 一篇文章弄懂SpringBoot中WebMvcConfigurer
- 一 基本Spring Cloud的微服务架构搭建及应用