springboot/cloud启动方式说明

     2022-03-29     770

关键词:

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

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

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

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

由于spring boot/spring cloud构建完成后通常是以.jar后缀结尾的包,并且内嵌web承载容器,所以spring boot/spring cloud启动方式很简单,即(以tomcat为例):

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

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

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

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

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

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

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

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子目录里。

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版本!


springcloudspringbootmybatis分布式微服务云架构使用intellij中的springinitializr来快速构建springboot/cloud工程

在之前的所有SpringBoot和SpringCloud相关博文中,都会涉及SpringBoot工程的创建。而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建。本文我们将介绍嵌入的Intellij中的SpringInitializr工具,它同Web提供... 查看详情

springboot/cloud应用监控

...要是监控服务及服务器的各项指标。该项目是使用了开源springboot监控项目spring-boot-admin,开源项目地址:spring-boo 查看详情

springboot/cloud配置文件加密jasypt

场景:在开发中,springboot的配置文件会有数据库连接等信息,如果是生产环境的数据库账号密码,那么其他的开发人员也能看到,这样就比较危险了,为了防止别人能看到配置文件中的数据库账号密码等核心数据信息,可以给密码加密使... 查看详情

是时候给大家介绍springboot/cloud背后豪华的研发团队了。

...发展历史,这尼玛就是一场商业大片呀。我们刚开始学习SpringBoot的时候肯定都会看到这么一句话:SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这里的Pivotal团队肯定就是Sp... 查看详情

禁用 Spring Boot/Cloud 中的功能

】禁用SpringBoot/Cloud中的功能【英文标题】:DisablefeaturesintoSpringBoot/Cloud【发布时间】:2021-09-2408:28:40【问题描述】:我感兴趣的是可以禁用SpringBoot/Cloud中未使用的功能吗?如果没有办法删除很多必要的功能?你知道一些如何进... 查看详情

springboot+cloud学习消息中间件ribbitmq

安装RabbitMQwindow下安装: (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好,安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erl... 查看详情

tsingsee青犀视频流媒体平台easycvreasynvreasydsseasygbs启动与运行方式说明

...电脑后发现仍可以直接登录平台使用,而不需要再次启动服 查看详情

springcloud版本version命名说明(edgware)

SpringCloud版本version命名说明(Edgware) 版权声明:guofangsky版权所有,转载不究。https://blog.csdn.net/guofangsky/article/details/82868564springboot/cloud项目中,看到如下配置: <parent> <groupId>org.springf 查看详情

mythxinwcf通用宿主绿色版v1.2发布,及服务启动相关说明

...允许数据传输量2.程序大量优化3.bug修正4.增加已服务方式启动 点击服务方式启动后,会将软件注册为服务。 然后软件就会变成一个对服务的管理器。软件是通过服务自身的接口服务站点来访问的。  这个地址是在... 查看详情

以编程方式启动 OSGi(Equinox)?

】以编程方式启动OSGi(Equinox)?【英文标题】:ProgrammaticallyStartOSGi(Equinox)?【发布时间】:2011-06-0802:06:18【问题描述】:我希望能够轻松启动OSGi框架(最好是Equinox)并从javamain加载我的pom中列出的任何包。这可能吗?如果有,... 查看详情

项目中遇到的问题00000--springboot扫描controller问题

springboot(@SpringBootApplication)根据注解是自动装配的,不存在扫包配置。(非同一个启动包路径除外,一般也不会出现这种情况。)不然@Controller注解还有什么意义呢?除非是第三方包,如mybatis,feign等,不是spring自家的东西,... 查看详情

Spring Boot + 云 | Zuul 代理 |附加 URL/重写

】SpringBoot+云|Zuul代理|附加URL/重写【英文标题】:SpringBoot+Cloud|ZuulProxy|AppendaURL/rewrite【发布时间】:2015-11-2819:53:07【问题描述】:我正在使用SpringBoot+Cloud|Zuul代理(org.springframework.cloud:spring-cloud-starter-zuul:1.0.0.RELEASE)。我有以下... 查看详情

springboot测试方法说明

1.方法的说明SpringBoot为了简化程序测试过程,SpringBoot针对于测试方法,开发了个注解@SpringBootTest.规则说明:     1.当运行@Test注解标识的方式时SpringBoot程序启动    2.SpringBoot启动,内部Spring容器启动,基于IOC管理对象,DI注入... 查看详情

springboot的配置文件说明

1、以servlet的方式启动SpringBoot正常情况下要复制代码到tomcat去启动,但springboot内置tomcat了,配置好就可以直接run方法直接运行。  2、直接run运行  查看详情

jvm参数说明

...式。server:是否监听debuger的调试请求。suspend:是否等待启动,也即设置是否在debuger调试链接建立后才启动debugeeJVM。ad 查看详情

将 Spring boot/cloud 与 Amazon AWS lambda 一起使用不会注入值

】将Springboot/cloud与AmazonAWSlambda一起使用不会注入值【英文标题】:UsingSpringboot/cloudwithAmazonAWSlambdadoesnotinjectvalues【发布时间】:2016-07-0501:28:59【问题描述】:我有一个由AWS直接调用的AWSlambdaRequestHandler类。最终我需要让它与SpringB... 查看详情

vs打包程序制作的快捷方式指向错误的位置(指向安装包文件)导致每次启动都要windows正在配置

刚刚开发完成的一个WPF项目,使用VS2010自带的打包工具对它进行打包(设置开始菜单的快捷方式),安装后,发现快捷方式的目标指向有问题。这里我主要想说明打包后进行安装完毕后,快捷方式的指向问题。1、打包后生成文件说... 查看详情

springboot的常用api说明(代码片段)

1、SpringApplication类作用:用于启动SpringBoot的程序,根据传入的类的声明的注解来决定不同的启动方式示例代码:1packageorg.ranger;2importorg.springframework.boot.SpringApplication;3importorg.springframework.boot.autoconfigure.SpringBootApplica 查看详情