文章插图
图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 , 对其进行必要的配置就可以了 。
推荐阅读
- 扒一扒Spring家族的前世今生
- 聊聊Java中的异常及处理
- 聊聊服务灾备
- 聊聊DOS操作系统中的文件系统FAT12
- 一文搞懂 Spring JPA
- 一 当用SpringApplication.run的时候发生了什么
- Spring简单入门教程(二)spring的体系结构
- Spring启动原理和可扩展设计分析
- 建议收藏学习 一篇文章弄懂SpringBoot中WebMvcConfigurer
- 一 基本Spring Cloud的微服务架构搭建及应用