13.2.3 使用Spring BootMaven插件
Spring Boot包含一个Maven插件 Maven plugin ,它可以把项目打包成一个可执行的jar,如果你想使用,添加这个插件到你的<plugins> 部分,像下面这个例子展示的一样:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
| |
如果你使用的Spring Boot启动程序父pom,你仅仅需要添加这个插件,不需要配置,除非你想改变父pom中定义的配置。 |
13.5 Starters
启动器是一组内置在你的应用程序中的方便的依赖描述,你可以获取Spring以及相关技术的一站式服务,而且不需要寻找示例代码和复制粘贴代码来家在依赖描述,例如,如果你想要使用Spring和JPA来进行数据库访问,将spring-boot-starter-data-jpa 依赖放到你的项目中
这个启动器包括许多依赖,你需要通过这些来快速启动项目并且保持运行一致,以及一组受支持的托管传递依赖项。
What’s in a name
所有官方的启动器都遵循类似的命名模式:spring-boot-starter-*, * 是表示特定应用程序的类型,这个命名结构是为了帮助你快速找到不需要的启动器,许多IDE中的Maven集成支持你通过名字搜索依赖,例如,安装了合适的Eclipse和STS,你可以在pom编辑器中ctrl-space 并输入“spring-boot-starter” 以获取更完整的列表。
正如 “Creating Your Own Starter”这一章节描述,第三方启动器不应该以 spring-boot开始,因为它是为官网SpringBoot保留的,然而,第三方启动器通常以项目名开头,例如,第三方启动器叫 thirdpartyproject ,将通常这样命名thirdpartyproject-spring-boot-starter.
下面的应用启动器被Spring Boot项目的org.springframework.boot 项目组提供:
表13.1 Spring Boot应用程序启动器
名称 | 描述 |
spring-boot-starter | 核心启动器,包括自动配置支持,日志记录和YAML |
spring-boot-starter-activemq | 使用Apache ActiveMQ进行JMS消息传递的启动器 |
spring-boot-starter-amqp | 使用AMQP和RabbitMQ的启动器 |
spring-boot-starter-aop | 使用Spring AOP和AspectJ进行面向切面编程的启动器 |
spring-boot-starter-cache | 使用Spring Framework的缓存支持的启动器 |
spring-boot-starter-data-elasticsearch | 使用Elasticsearch搜索和分析引擎以及Spring Data Elasticsearch的启动器 |
spring-boot-starter-security | 使用Spring Security的启动器 |
spring-boot-starter-validation | 使用Java Bean Validation和Hibernate Validator的启动器 |
spring-boot-starter-webflux | 使用Spring Framework的Reactive Web支持构建WebFlux应用程序的启动器 |
spring-boot-starter-websocket | 使用Spring Framework的WebSocket支持构建WebSocket应用程序的启动器 |
除了应用程序启动器,下面的启动器还可以添加生产就绪功能Iproduction ready :
Table 13.2. Spring Boot 生产启动器
最后,Spring Boot也包括下面启动器,如果你想要额外配置或者其他方面可以使用:
名字 | 描述 |
spring-boot-starter-jetty | 使用Jetty作为嵌入式servlet容器的启动器,可以替代Spring-boot-starter-tomcat |
spring-boot-starter-log4j2 | 使用Log4j2的启动器,可以替代Spring-boot-starter-logging |
spring-boot-starter-reactor-netty | 使用Reactor Netty作为嵌入式响应式HTTP服务器 |
spring-boot-starter-tomcat | 使用Tomcat作为嵌入式servlet容器的入门者,Spring-boot-starter-web使用的默认的servlet容器启动器 |
14. 构建你的代码
Spring Boot 不需要任何特定的代码结构,但是,有一些很好的实践对可能有帮助。
Part VI. 部署 Spring Boot 应用程序
Spring Boot灵活包装选项在打包应用程序的时候提供了很好的选择,你可以部署spring boot应用程序到各种云平台,容器镜像(如docker),或者虚拟/真实主机。
这一章节介绍常见的部署方案。
60. 部署到云
Spring Boot的可执行的jar适用于大多数云Paas平台,这些提供商往往要求你携带你自己的容器,他们管理应用程序进程,而不是java应用程序,因此他们需要一个中间件,使您的应用程序适应云的运行过程。
两个受欢迎的云提供商,Heroku和Cloud Foundry,采用“buildpack”方法,buildpack将你部署的代码放到你需要开始的应用程序里,它可能是JDK,和一个java,一个嵌入式的web服务器,或者一个完整应用服务器的调用,buildpack是可插拔的,但是理想状况下,您应该尽少的的自定义,减少了不受控制的功能的占用空间,它最大限度的减少了开发和生产环境之间的差异。
理想情况下,你的应用程序,像Spring Boot可执行的jar,具有运行打包它需要的所有内容。
在这一章节,我们将介绍如何在入门部分开发并在云中运行的简单应用程序。