spring boot/cloud 启动方式说明

spring boot/cloudsh的java开源框架,spring cloud更多注重服务注册以及服务治理,通俗来说就是咱们所说的微服务,须要注意的是spring cloud是基于spring boot的扩展版,关于更多spring boot 以及spring cloud 文档请查看官方文档!html

spring boot 参考文档:
https://qbgbook.gitbooks.io     https://docs.spring.io/spring-boot/docs/current/reference/html/java

spring cloud参考文档:
https://springcloud.cc     https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.htmlgit

一.关于spring boot/spring cloud 启动方式

因为spring boot/spring cloud构建完成后一般是以.jar后缀结尾的包,而且内嵌web承载容器,因此spring boot/spring cloud启动方式很简单,即(以tomcat为例):web

java -jar xxxxxx-0.0.1-xxx.jar --spring.config.location=/path/application.properties

以上方式就能够启动spring boot/spring cloud应用spring

二.关于spring boot/spring cloud 配置生效顺序优先级

通常在一个项目中,老是会有好多个环境。好比: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每一个环境上的配置文件老是不同的,甚至开发环境中每一个开发者的环境可能也会有一点不一样,Spring Boot提供了一种优先级配置读取的机制来帮助咱们从这种困境中走出来. 常规状况下,咱们都知道Spring Boot的配置会从其对应的application.properties,(默认配置文件名为:application)中读取。其实是从其jar包下resource目录下的application.propert读取配置。sql

在实际应用中管理配置并非一个容易的任务,尤为是在应用须要部署到多个环境中时。一般会须要为每一个环境提供一个对应的属性文件,用来配置各自的数据库链接信息、服务器信息和第三方服务帐号等。shell

一般的应用部署会包含开发、测试和生产等若干个环境。不一样的环境之间的配置存在覆盖关系。测试环境中的配置会覆盖开发环境,而生产环境中的配置会覆盖测试环境,因此Spring Boot 提供了一种统一的方式来管理应用的配置,容许开发人员使用属性文件YAML 文件、环境变量和命令行参数来定义优先级不一样的配置值。数据库

Spring Boot 所提供的配置优先级顺序比较复杂。按照优先级从高到低的顺序,具体的列表(从高到低)以下所示:bootstrap

1.命令行参数(优先级最高)。
2.经过 System.getProperties() 获取的 Java 系统参数。
3.操做系统环境变量。
4.从java:comp/env 获得的 JNDI 属性。
5.经过 RandomValuePropertySource 生成的random.*属性。
6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件,经过spring.config.location参数指定
7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件
10.应用 Java配置类,包含@Configuration注解的 Java 类,经过@PropertySource注解声明的属性文件。
11.经过SpringApplication.setDefaultProperties声明的默认属性。
application.properties和application.yml文件能够放在一下四个位置:

1.外置:在相对于应用程序运行目录的/congfig子目录里。tomcat

2.外置:在应用程序运行的目录里

3.内置:在config包内

4.内置:在Classpath根目录

若是Spring Boot在优先级更高的位置找到了配置,那么它就会忽略优先级低的配置。下面咱们简单讲讲这些优先级。Spring Boot 的这个配置优先级看似复杂,实际上是很合理的。命令行参数的优先级之因此被设置为最高,是由于能够方便咱们在测试或生产环境中快速地修改配置参数值,而不须要从新打包和部署应用。SpringApplication 类默认会把以“--”开头的命令行参数转化成应用中可使用的配置参数,如 “--name=Alex” 会设置配置参数 ,“name” 的值为 “Alex”。若是不须要这个功能,能够经过SpringApplication.setAddCommandLineProperties(false)禁用解析命令行参数。

若是应用为spring cloud构建,会引入bootstrap.yml或bootstrap.properties文件,注意spring cloud中bootstrap.yml配置会优先加载,即在应用启动前会先加载该配置,因此在同时存在application.yml配置文件和bootstrap.yml配置文件时候,这时会优先加载bootstrap.yml配置,一样bootstrap配置也能够外部配置,即在指定的配置目录新建该文件就可覆盖内嵌在jar包里的bootstrap.yml配置,注意此时只须要用命令行指定配置文件的目录,如A应用的配置文件为:/data/webs/A/conf/。

这时就须要用命令行 --spring.config.location=/data/webs/A/conf/指定配置文件加载目录便可,须要注意的是:无论spring boot 仍是spring cloud均可以经过命令行传参更改配置的优先级!

三.关于spring boot/spring cloud 配置文件名称

mo9微服务应用项目中,全部的配置文件name都是使用默认名称:application(无论后缀.properties或者.yml),统一使用默认名称,不过配置会结合profiles属性来区分对应配置,比喻:运维配置,业务配置,还有其余配置,以下:

默认配置文件:application.yml或application.properties,须要注意的是:开发环境激活的属性为:dev以及ops;生产环境激活的属性为:prod以及ops,以下代码所示:

开发环境(dev)

spring.profiles.active=dev
spring.profiles.include=ops

生产环境(prod)

spring.profiles.active=prod
spring.profiles.include=ops
通用运维配置文件:application-ops.yml或application-ops.properties;

主要配置内容为运维配置,比喻:内嵌tomcat服务端口,管理端口,最大链接数,超时时间,contxt-path等等运维上配置

开发环境业务配置文件:application-dev.yml或application-dev.properties;

主要内容为开发环境上业务的配置,比喻:数据库配置,nosql配置,mq配置,接口链接配置。

生产环境业务配置文件:application-prod.yml或application-prod.properties;

主要内容为生产环境上业务的配置,比喻:数据库配置,nosql配置,mq配置,接口链接配置。

三.关于spring boot/spring cloud 日志配置

默认状况下spring boot启动方式应用日志都是输出到控制台,若是咱们须要输出到文件,则须要在application-ops.properties或application-ops.yml定义如下配置参数:logging.file 或 logging.path固然最直接的方式能够直接在启动时输出到某个文件,还能够自定义日志配置而后在application-ops.yml配置文件中经过如下配置应用便可

logging.config=/path/logback-spring.xml

注意:关于日志配置文件最好是以-spring.xml结尾的文件!

四.关于spring boot/spring cloud 框架版本

因为spring boot版本更新较快,目前最新版本为2.0,考虑到测试,生产环境配置文件的兼容性,因此在实际开发过程当中建议你们使用2.0如下版本,例如1.5.8 release版本!

相关文章
相关标签/搜索