- 作者简介
- 内容提要
- 关于本书
- 路线图
- 代码规范与下载
- 作者在线
- 封面插图简介
- 前言
- 译者序
- 致谢
- 第1部分 Spring 的核心
- 第1章 Spring 之旅
- 第2章 装配 Bean
- 第3章 高级装配
- 第4章 面向切面的 Spring
- 第2部分 Web 中的 Spring
- 第5章 构建 Spring Web 应用程序
- 第6章 渲染 Web 视图
- 第7章 Spring MVC 的高级技术
- 第8章 使用 Spring Web Flow
- 第9章 保护 Web 应用
- 第3部分 后端中的 Spring
- 第10章 通过 Spring 和 JDBC 征服数据库
- 第11章 使用对象-关系映射持久化数据
- 第12章 使用 NoSQL 数据库
- 第13章 缓存数据
- 第14章 保护方法应用
- 第4部分 Spring 集成
- 第15章 使用远程服务
- 第16章 使用 Spring MVC 创建 REST API
- 第17章 Spring消息
- 第18章 使用 WebSocket 和 STOMP 实现消息功能
- 第19章 使用 Spring 发送 Email
- 第20章 使用 JMX 管理 Spring Bean
- 第21章 借助 Spring Boot 简化 Spring 开发
21.2.5 尝试运行
Contacts应用非常简单,但是也算得上现实中的Spring应用。它具有Spring MVC控制器和Thymeleaf模板所定义的Web层,并且具有Repository和Spring JdbcTemplate所定义的持久层。
到此为止,我们已经编写完了Contacts所需的应用级别代码。不过,我们还没有编写任何形式的配置。我们没有编写任何Spring配置,也没有在web.xml或Servlet初始化类中配置DispatcherServlet。
如果我说不需要编写任何的配置,你会相信吗?
这应该做不到吧,毕竟在对Spring的批评中,人们都在说Spring全是配置,肯定有我们忽略掉的XML文件或Java配置类。我们所编写的Spring应用程序根本就不可能没有任何配置的……那么,我们到底能做到吗?
通常来讲,Spring Boot的自动配置特性消除了绝大部分或者全部的配置。因此,完全可能编写出没有任何配置的Spring应用程序。当然,自动配置并不能涵盖所有的场景,因此典型的Spring Boot应用程序依然会需要一点配置。
具体到Contacts应用,我们不需要任何的配置。Spring的自动配置功能已经将所有的事情都做好了。
但是,我们需要有个特殊的类来启动Spring Boot应用。Spring本身并不知道自动配置的任何信息。程序清单21.7中的Application类就是Spring Boot启动类的典型例子。
程序清单21.7 初始化Spring Boot配置的简单启动类
好吧,我承认Application中有那么一点配置。它使用@ComponentScan注解来启用组件扫描,另外它还使用了@EnableAutoConfiguration,这会启用Spring Boot的自动配置特性。但是,也就这么多了!除了这两行代码以外,Contacts再也没有什么配置了。
Application类最有意思的一点在于它具有一个main()方法。稍后将会看到,Spring Boot应用会以一种特殊的方法运行,正是这里的main()方法使这一切成为可能。在main()方法中,这行代码会告诉Spring Boot(通过SpringApplication类)根据Application中的配置以及命令行中的参数来运行。
现在,我们马上就可以运行应用了。剩下就是要进行构建。如果使用Gradle的话,那么如下的命令行会将项目构建到“build/libs/contacts-0.1.0.jar”中:
如果你喜欢Maven的话,那么可以按照如下的方式构建项目:
运行Maven构建后,你会在target文件夹下找到构建形成的结果。
现在,我们就可以运行它了。按照传统的方式,这意味着要将应用的WAR文件部署到Servlet容器中,如Tomcat或WebSphere。但是在这里,我们甚至没有WAR文件——构建形成的是一个JAR文件。
这没有什么问题。我们可以按照如下的方式从命令行运行它(引用的是基于Gradle构建的JAR文件):
在几秒钟后,应用应该已经启动完成并且可以访问了。打开浏览器进入http://localhost:8080,你就应该可以输入联系人了。在输入几个联系人后,浏览器将会如图21.1所示。
你可能觉得这并不符合Web应用的运行方式。像这样从命令行运行应用非常简洁和方便,但是,对于你来讲,也许这并不理想。在你所工作的环境中,有可能需要将Web应用作为WAR文件部署到Web容器中。如果不提交WAR文件的话,可能不满足公司的部署策略。
图21.1 Spring Boot Contacts应用
好的,那也没有问题。
即便是对于生产环境,通过命令行来运行应用也是合理的方案,但是我理解你可能需要遵循公司的部署流程。这意味着需要构建和部署WAR文件。
好消息是,如果你需要WAR文件的话,并没有必要舍弃Spring Boot的简洁性。需要做的事情仅仅是稍微调整一下构建文件。在Gradle构建中,我们需要添加如下这行代码来应用“war”插件:
除此之外,还需要将“jar”配置调整为“war”。这实际上就是将“j”替换为“w”:
如果是Maven构建的项目,那会更加简单。只需将packaging从“jar”替换为“war”即可:
现在,我们可以重新构建项目,然后将会在构建目录中找到contacts-0.1.0.war文件。这个WAR文件文件可以部署到任意支持Servlet 3.0的容器中。另外,我们依然可以在命令行中运行这个应用:
没错:这是一个可运行的WAR文件!对于两种场景来说,这都是最佳的方案。
我们可以看到,Spring Boot能够在很大程度上尽可能简化Spring应用的部署。Spring Boot Stater简化了项目构建的依赖,自动配置消除了显式的Spring配置。但稍后你会看到,如果再结合Groovy,它会更加简单。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论