返回介绍

21.2.5 尝试运行

发布于 2024-08-17 00:45:49 字数 3450 浏览 0 评论 0 收藏 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文