Spring Cloud(02)——bootstrap文件介绍
Posted elim168
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud(02)——bootstrap文件介绍相关的知识,希望对你有一定的参考价值。
bootstrap文件介绍
bootstrap的中文翻译是“引导程序”的意思。Spring中的ApplicationContext是会有父子关系的。Spring Cloud初始化的ApplicationContext叫bootstrap ApplicationContext,之后会创建一些子的ApplicationContext。这个bootstrap ApplicationContext如果在初始化的过程中是可以接收一些外部属性控制的,那么对应的属性需要配置在bootstrap.yml或bootstrap.properties文件中。默认会在Classpath的根路径或config路径下寻找它们。ApplicationContext是有父子关系的,那依托于ApplicationContext的Environment也相当于间接的有了父子关系,所以定义在bootstrap.yml文件中的属性值也可以被我们自己定义的bean使用。只是它里面的值会被我们定义在application.yml中的相同属性的值覆盖掉。bootstrap ApplicationContext寻找的外部属性文件的名字不一定是bootstrap,它可以通过系统属性spring.cloud.bootstrap.name
进行指定,比如通过系统属性spring.cloud.bootstrap.name
指定bootstrap属性文件的名称是application,即会在Classpath根目录或config目录下寻找application.yml或application.properties文件。也可以通过系统属性spring.cloud.bootstrap.location
指定bootstrap文件的位置,它们的用法就类似于Spring Boot中指定配置文件的spring.config.name
和spring.config.location`。
如果在bootstrap.yml中指定了
spring.profiles.active=dev
,则bootstrap ApplicationContext寻找配置文件时还会寻找bootstrap-dev.yml文件。
如果有需要我们也需要在bootstrap ApplicationContext中做一些事情,比如定义一些bean等,则我们也可以定义一个使用@Configuration
标注的Class,然后在Classpath下的META-INF/spring.factories
文件中通过org.springframework.cloud.bootstrap.BootstrapConfiguration
属性指定@Configuration
类的名称。比如下面这样一个@Configuration
类。
@Configuration
public class BootstrapConfiguration
@Bean
public TestService testService()
return new TestService();
那么在spring.factories
文件中需要这样定义。
org.springframework.cloud.bootstrap.BootstrapConfiguration=com.elim.learn.spring.cloud.config.client.BootstrapConfiguration
(注:本文是基于Spring Cloud Finchley.SR1所写)
以上是关于Spring Cloud(02)——bootstrap文件介绍的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Alibaba商城实战项目基础篇(day02)
Spring Cloud开发实践 - 02 - Eureka服务和接口定义
Spring Cloud Alibaba - 02 SpringCloud SpringCloud Alibaba SpringBoot的生产版本选择
Spring Cloud Alibaba系列nacos作为服务注册中心