没有合适的资源?快使用搜索试试~ 我知道了~
首页Spring Cloud Dalston 中文文档 参考手册 中文版 带书签
资源详情
资源评论
资源推荐
Spring Cloud
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断
路器,智能路由,微代理,控制总线)。分布式系统的协调导致样板模式,并且使用 Spring Cloud开发人员
可以快速站起来实施这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自
己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。
版本:Dalston.RELEASE
特性
Spring Cloud专注于为典型用例提供良好的开箱即用经验和扩展机制来涵盖他人。
分布式/版本化配置
服务注册和发现
路由
service - to - service调用
负载均衡
断路器
分布式消息传递
云原生应用程序
云原生是一种应用开发风格,鼓励在持续交付和价值驱动开发领域轻松采用最佳实践。相关的学科是建立12-factor Apps,
其中开发实践与交付和运营目标相一致,例如通过使用声明式编程和管理和监控。Spring Cloud以多种具体方式促进这些开
发风格,起点是一组功能,分布式系统中的所有组件都需要或需要时轻松访问。
许多这些功能都由Spring Boot
覆盖,我们在Spring Cloud中建立。更多的由Spring Cloud提供为两个库:Spring Cloud
Context和Spring Cloud Commons。Spring Cloud上下文为Spring Cloud应用程序(引导上下文,加密,刷新范围和环境端点)
的 ApplicationContext 提供实用程序和特殊服务。Spring Cloud Commons是一组在不同的Spring Cloud实现中使用的抽象
和常用类(例如)。
如果由于“非法密钥大小”而导致异常,并且您正在使用Sun的JDK,则需要安装Java加密扩展(JCE)无限强度管理策略文
件。有关详细信息,请参阅以下链接:
Java 6 JCE
Java 7 JCE
Java 8 JCE
将文件解压缩到JDK / jre / lib / security文件夹(无论您使用的是哪个版本的JRE / JDK x64 / x86)。
注意
Spring Cloud根据非限制性Apache 2.0许可证发布。如果您想为文档的这一部分做出贡献,或者发现错误,
请在github
中找到项目中的源代码和问题跟踪器。
Spring Cloud上下文:应用程序上下文服务
Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视
任务的端点。Spring Cloud建立在此之上,并添加了一些可能系统中所有组件将使用或偶尔需要的功能。
引导应用程序上下文
一个Spring Cloud应用程序通过创建一个“引导”上下文来进行操作,这个上下文是主应用程序的父上下文。开箱即用,负责
从外部源加载配置属性,还解密本地外部配置文件中的属性。这两个上下文共享一个
Environment ,这是任何Spring应用
程序的外部属性的来源。Bootstrap属性的优先级高,因此默认情况下不能被本地配置覆盖。
引导上下文使用与主应用程序上下文不同的外部配置约定,因此使用
bootstrap.yml
application.yml (或 .properties )代替引导和主上下文的外部配置。例:
bootstrap.yml
如果您的应用程序需要服务器上的特定于应用程序的配置,那么设
置
spring.application.name
(在
bootstrap.yml
或
application.yml
)中是个好主意。
spring:
application:
name: foo
cloud:
config:
uri: ${SPRING_CONFIG_URI:http://localhost:8888}
您可以通过设置 spring.cloud.bootstrap.enabled=false (例如在系统属性中)来完全禁用引导过程。
应用程序上下文层次结构
如果您从 SpringApplication 或 SpringApplicationBuilder 构建应用程序上下文,则将Bootstrap上下文添加为该上下
文的父级。这是一个Spring的功能,即子上下文从其父进程继承属性源和配置文件,因此与不使用构建
相同上下文相比,“主”应用程序上下文将包含其他属性源。额外的财产来源是:
“bootstrap”:如果在Bootstrap上下文中找到任何 PropertySourceLocators ,则可选 CompositePropertySource 显
示为高优先级,并且具有非空属性。一个例子是来自服务器的属性。有关如何自定义此属性源的内容
的说明
,请参阅 下文。
:[classpath:bootstrap.yml]”(如果Spring配置文件处于活动状态,则为朋友)。如果您有一
个
bootstrap.yml (或属性),那么这些属性用于配置引导上下文,然后在父进程设置时将它们添加到子上下文
中。它们的优先级低于
application.yml (或属性)以及作为创建Spring Boot应用程序的过程的正常部分添加到子级
的任何其他属性源。有关如何自定义这些属性源的内容的说明
,请参阅下文。
由于属性源的排序规则,“引导”条目优先,但请注意,这些条目不包含来自
bootstrap.yml 的任何数据,它具有非常低的
优先级,但可用于设置默认值。
您可以通过简单地设置您创建的任何
ApplicationContext 的父上下文来扩展上下文层次结构,例如使用自己的界面,或
使用
SpringApplicationBuilder 方便方法( parent() , child() 和 sibling() )。引导环境将是您创建自己的最高
级祖先的父级。层次结构中的每个上下文都将有自己的“引导”属性源(可能为空),以避免无意中将值从父级升级到其后
代。层次结构中的每个上下文(原则上)也可以具有不同的
spring.application.name ,因此如果存在配置服务器,则
不同的远程属性源。普通的Spring应用程序上下文行为规则适用于属性解析:子环境中的属性通过名称和属性源名称覆盖父
项中的属性(如果子级具有与父级名称相同的属性源,一个来自父母的孩子不包括在孩子中)。
请注意,
SpringApplicationBuilder 允许您在整个层次结构中共享 Environment ,但这不是默认值。因此,兄弟情境
尤其不需要具有相同的资料或财产来源,尽管它们与父母共享共同点。
改变引导位置Properties
可以使用 spring.cloud.bootstrap.name (默认“引导”)或 spring.cloud.bootstrap.location (默认为空)指
定
bootstrap.yml (或 .properties )位置,例如在系统属性中。这些属性的行为类似于具有相同名称
的
spring.config.* 变体,实际上它们用于通过在其 Environment 中设置这些属性来设置引
导
ApplicationContext 。如果在正在构建的上下文中有活动的配置文件(来自 spring.profiles.active 或通
过
Environment API)),则该配置文件中的属性也将被加载,就像常规的Spring Boot应用程序,例如来自 bootstrap-
development.properties 的“开发”简介。
覆盖远程Properties的值
通过引导上下文添加到应用程序的属性源通常是“远程”(例如从配置服务器),并且默认情况下,不能在本地覆盖,除了在
命令行上。如果要允许您的应用程序使用自己的系统属性或配置文件覆盖远程属性,则远程属性源必须通过设
置
spring.cloud.config.allowOverride=true (在本地设置本身不起作用)授予权限。一旦设置了该标志,就会有一
些更精细的设置来控制远程属性与系统属性和应用程序本地配置的位
置:
spring.cloud.config.overrideNone=true 覆盖任何本地属性
源,
spring.cloud.config.overrideSystemProperties=false 如果只有系统属性和env var应该覆盖远程设置,而不
是本地配置文件。
自定义引导配置
可以通过在 org.springframework.cloud.bootstrap.BootstrapConfiguration 键下添加条目 /META-
INF/spring.factories 来训练引导上下文来执行任何您喜欢的操作。这是用于创建上下文的Spring @Configuration 类
的逗号分隔列表。您可以在此处创建要用于自动装配的主应用程序上下文的任何bean,并且还
有
ApplicationContextInitializer 类型的 @Beans 的特殊合同。如果要控制启动顺序(默认顺序为“最后”),可以使
用
@Order 标记类。
警告
添加自定义 BootstrapConfiguration 时,请注意,您添加的类不是错误的 @ComponentScanned 到您
的“主”应用程序上下文中,可能不需要它们。对于您
的
@ComponentScan 或 @SpringBootApplication 注释配置类尚未涵盖的启动配置类,请使用单独的包
名称。
引导过程通过将初始化器注入主
SpringApplication 实例(即正常的Spring Boot启动顺序,无论是作为独立应用程序运行
还是部署在应用程序服务器中)结束。首先,从
spring.factories 中找到的类创建引导上下文,然后
在
ApplicationContextInitializer 类型的所有 @Beans 添加到主 SpringApplication 开始之前。
自定义引导属性源
引导过程添加的外部配置的默认属性源是,但您可以通过将 PropertySourceLocator 类型的bean添加到引导
上下文(通过
spring.factories )添加其他源。您可以使用此方法从其他服务器或数据库中插入其他属性。
作为一个例子,请考虑以下微不足道的自定义定位器:
@Configuration
public class CustomPropertySourceLocator implements PropertySourceLocator {
@Override
public PropertySource<?> locate(Environment environment) {
return new MapPropertySource("customProperty",
传入的 Environment 是要创建的 ApplicationContext 的 Environment ,即为我们提供额外的属性来源的。它将已经具
有正常的Spring Boot提供的资源来源,因此您可以使用它们来定位特定于此
Environment 的属性源(例如通过将其绑定
在
spring.application.name 上,如在默认情况下所做的那样属性源定位器)。
如果你在这个类中创建一个jar,然后添加一个
META-INF/spring.factories 包含:
那么“customProperty”
PropertySource 将显示在其类路径中包含该jar的任何应用程序中。
环境变化
应用程序将收听 EnvironmentChangeEvent ,并以几种标准方式进行更改(用户可以以常规方式添
加
ApplicationListeners 附加 ApplicationListeners )。当观察到 EnvironmentChangeEvent 时,它将有一个已
更改的键值列表,应用程序将使用以下内容:
重新绑定上下文中的任何 @ConfigurationProperties bean
为 logging.level.* 中的任何属性设置记录器级别
请注意,配置客户端不会通过默认轮询查找
Environment 中的更改,通常我们不建议检测更改的方法(尽管可以使
用
@Scheduled 注释进行设置)。如果您有一个扩展的客户端应用程序,那么最好将 EnvironmentChangeEvent 广播到所
有实例,而不是让它们轮询更改(例如使用Spring Cloud
总线)。
EnvironmentChangeEvent 涵盖了大量的刷新用例,只要您真的可以更改 Environment 并发布事件(这些API是公开的,
部分内核为Spring)。您可以通过访问
/configprops 端点(普通Spring Boot执行器功能)来验证更改是否绑定
到
@ConfigurationProperties bean。例如, DataSource 可以在运行时更改其 maxPoolSize (由Spring Boot创建的默
认
DataSource 是一个 @ConfigurationProperties bean),并且动态增加容量。重新绑
定
@ConfigurationProperties 不会覆盖另一大类用例,您需要更多的控制刷新,并且您需要更改在整
个
ApplicationContext 上是原子的。为了解决这些担忧,我们有 @RefreshScope 。
刷新范围
当配置更改时,标有 @RefreshScope 的Spring @Bean 将得到特殊处理。这解决了状态bean在初始化时只注入配置的问
题。例如,如果通过
Environment 更改数据库URL时 DataSource 有开放连接,那么我们可能希望这些连接的持有人能够
Collections.<String, Object>singletonMap("property.from.sample.custom.source", "worked as intended"));
}
}
org.springframework.cloud.bootstrap.BootstrapConfiguration=sample.custom.CustomPropertySourceLocator
剩余395页未读,继续阅读
本站的昵称
- 粉丝: 14
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5