您的位置:首页 > 编程语言 > Java开发

干货分享微服务spring-cloud(1.初探)

2018-02-13 13:47 609 查看

前言

读者:对spring、spring boot有一定了解
难度:初中级,旨在快速应用于项目
参考文献:网络、书籍、官方文档,有任何错误欢迎大家留言拍砖指正
实战模拟源码:https://github.com/yhqnh/demo-springcloud,使用spring-cloud dalston版本

1. Spring boot

1.1. 依赖关系

spring cloud 强依赖spring boot
spring boot强依赖spring
弱弱说一句强依赖就是没有它不行,所以有必要对spring或spring boot一些特性作简单介绍

1.2. 元注解和组合注解

元注解:可以注解到别的注解上的注解,被注解的注解称之为组合注解。
例如@SpringBootApplication就是组合注解,它组和了@SpringBootConfiguration
@EnableAutoConfiguration等。



1.3. 自动配置

spring boot会根据在类路径中的jar包和类,为jar包里的类自动配置bean,这样会极大地减少我们要使用的配置。spring boot通过spring4.X提供的条件注解condition来实现。spring4.x提倡使用java配置和注解配置组合,不需要任何xml配置即可实现spring所有配置。也可使用@ImportResource({“application1.xml”,“application2.xml”})对 xml配置的支持。
关闭特定的自动配置使用@SpringBootConfiguration的exclude属性,例如exclude = {DataSourceAutoConfiguration.class}来关闭数据源自动配置



@condition根据满足某一特定条件创建一个特定的bean,比方说当类路径存在某一jar包时候,自动配置一个或多个bean。
@ConditionalOnBean:当容器里有指定的bean的条件下
@ConditionalOnClass:当类路径下有指定的类的条件下
@ConditionalOnMissingBean:当容器里没有指定bean的情况下
@ConditionalOnResource:类路径是否有指定的值
例如RabbitAutoConfiguration当发现类路径下没有ConnectionFactory类型的bean时创建一个




我们来看看EnableAutoConfiguration注解的源码



这里最关键的@import功能导入配置,EnableAutoConfigurationImportSelector使用
SpringFactoriesLoader.loadFactories方法来扫描具有META-INF/spring.factories文件的jar包,
而spring-boot-autoconfiguration的jar包里有spring.fatories文件,此文件包含了所有自动配置。






1.4. 多环境配置

在spring boot中,多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识。{profile}通过spring.profiles.active=test属性来设置则会加载application-test.properties配置文件。

1.5. 加载顺序

Spring boot加载属性顺序,数值越小优先级越高1) 在命令行中的参数2) SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以json格式配置在系统环境变量中3) java:comp/env中的JNDI属性4) Java的系统属性,可以通过System.getProperties()获得的内容5) 操作系统的环境变量6) 通过random.*配置的随机属性7) 位于当前应用jar包之外,针对不同{profile}环境的配置文件内容,例如application-{profile}.properties或是YAML定义的配置文件8) 位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如application-{profile}.properties或是YAML定义的配置文件9) 位于当前应用jar包之外的application.properties和YAML配置内容10) 位于当前应用jar包之内的application.properties和YAML配置内容11) @Configuration注解修改的类中,通过@PropertySource注解定义的属性12) 应用默认属性,使用SpringApplication.setDefaultProperties定义的内容例如Spring Cloud Config从git等外部获取配置来取代jar包内本地配置文件,这样即使同样名称的本地调试配置文件对其他demo、staging、prod也没有任何影响,因为7优先级高于8或者说9优先级高于10

1.6. actuator与原生端点

spring-boot-starter-actuator模块的实现对于实施微服务可以有效省去或减少监控系统在采集应用指标时的开发量。它提供了一些原始端点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息