SpringBoot实战(部署Spring Boot应用程序)读书笔记


本章将关注以下选项。
 向Java应用服务器里部署WAR文件。
 向Cloud Foundry里部署可执行JAR文件。
 向Heroku里部署可执行JAR文件(构建过程是由Heroku执行的)

衡量多种部署方式

 在IDE中运行应用程序(涉及Spring ToolSuite或IntelliJ IDEA)。
 使用Maven的spring-boot:run或Gradle的bootRun,在命令行里运行。
 使用Maven或Gradle生成可运行的JAR文件,随后在命令行中运行。
 使用Spring Boot CLI在命令行中运行Groovy脚本。
 使用Spring Boot CLI来生成可运行的JAR文件,随后在命令行中运行。
这些选项每一个都适合运行正在开发的应用程序。但是,如果要将应用程序部署到生产环境,
或其他非开发环境中,又该怎么办呢?如何把Spring Boot应用程序部署到一个更加传统的应用服务器环境里,
比如Tomcat、 WebSphere或WebLogic。在这些情境中,可执行JAR文件和Groovy代码不适用。
针对应用服务器的部署,你需要将应用程序打包成一个WAR文件。

 SpringBoot实战(部署Spring Boot应用程序)读书笔记_第1张图片

如你所见,在做最终选择时需要考虑目标环境。如果要将应用程序部署到自己数据中心的
Tomcat服务器上, WAR文件就是你的选择。另一方面,如果要部署到Cloud Foundry,可以使用
表里列出的各种选项

部署到应用服务器:
将阅读列表应用程序构建为WAR文件。这样才能把它部署到Java应用
服务器里,比如Tomcat、 WebSphere或WebLogic。

到目前为止,阅读列表应用程序每次运行, Web应用程序都通过内嵌在应用里的Tomcat提供
服务。情况和传统Java Web应用程序正好相反。不是应用程序部署在Tomcat里,而是Tomcat部署
在了应用程序里。归功于Spring Boot的自动配置功能,我们不需要创建web.xml文件或者Servlet初始化类来声明Spring MVC的DispatcherServlet。但如果要将应用程序部署到Java应用服务器里,我们就需
要构建WAR文件了。这样应用服务器才能知道如何运行应用程序。那个WAR文件里还需要一个
对Servlet进行初始化的东西。

构建war:
如果使用Maven构建项目,获取WAR文件会更容易。只需把元素的值从jar改为war。
war
这样就能生成WAR文件了。但如果WAR文件里没有启用Spring MVC DispatcherServlet
的web.xml文件或者Servlet初始化类,这个WAR文件就一无是处。
此时就该Spring Boot出马了。它提供的SpringBootServletInitializer是一个支持
Spring Boot的Spring WebApplicationInitializer实现。除了配置Spring的DispatcherServlet, SpringBootServletInitializer还会在Spring应用程序上下文里查找Filter、
Servlet或ServletContextInitializer类型的Bean,把它们绑定到Servlet容器里。
要使用SpringBootServletInitializer,只需创建一个子类,覆盖configure()方法
来指定Spring配置类。代码清单8-1是ReadingListServletInitializer,也就是我们为阅读
列表应用程序写的SpringBootServletInitializer的子类。
Application类上添加了@SpringBootApplication注解。这会隐性开启组件扫描,而组件扫
描则会发现并应用其他配置类。

创建生产 Profile(未使用过)
这里DataSource的类型是Tomcat的org.apache.tomcat.jdbc.pool.DataSource,不
要和javax.sql.DataSource搞混了。前者是后者的实现。连接数据库所需的细节(包括JDBC
驱动类名、数据库URL、用户名和密码)提供给了DataSourse实例。声明了这个Bean之后,默
认自动配置的DataSource Bean就会忽略。
这个@Bean方法最关键的一点是,它还添加了@Profile注解,说明只有在production
Profile被激活时才会创建该Bean。所以,在开发时我们还能继续使用嵌入式的H2数据库。激活
productionProfile后就能使用PostgreSQL数据库了。
虽然这么做能达到目的,但是配置数据库细节的时候,最好还是不要显式地声明自己的
DataSource Bean 。 在 不 替 换 自 动 配 置 的 Datasource Bean 的 情 况 下 , 我 们 还 能 通 过application.yml或application.properties来配置数据库的细节。表8-2列出了在配置DataSource
Bean时用到的全部属性。

开启数据库迁移(未使用过)
Spring Boot为两款流行的数据库迁移库提供了自动配置支持。
 Flyway(http://flywaydb.org)
 Liquibase(http://www.liquibase.org)


 

你可能感兴趣的:(SpringBoot实战(部署Spring Boot应用程序)读书笔记)