nacos使⽤oracle作为数据源_程序员你是如何使⽤Nacos作为
配置中⼼的?
假如你使⽤的是spring-cloud-alibaba微服务技术栈
单个服务独有配置⽂件
即去除应⽤程序的状态,配置统⼀外部化管理,⽅便进⾏⽔平的伸缩。
集成步骤:
假如我有⼀个应⽤app-design;
1,引⼊依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
2, 配置⽂件;
spring.abled=true
spring.fresh-enabled=true
spring.fig.server-addr=${spring.cloud.nacos.discovery.server-addr}
spring.fig.namespace=${spring.cloud.nacos.discovery.namespace}
说明如下:
3,使⽤配置的⽅式,同本地配置⽂件⼀样。
@Value @PropertyConfiguration 这些注解都是⽀持的;
4,确认⽅式,⽐如把之前的application.properties的配置放到了配置中⼼;
本地启动的时候,读取到了8081端⼝和数据库连接池的配置;
配置中⼼的连接原理,后⾯单独整理出来,知其然并知其所以然。
服务之间共享配置⽂件
场景:多个后端微服务,在同⼀个集中共⽤中间件的配置信息。
⽐如 缓存redis, 消息队列kafka, ⽂件服务器, 邮件服务器;
那么对应的配置⽂件没有必要在所有的后端微服务中单独存在,这些配置⽂件应该放在公共配置⽂件中,但是也可以被具体的后端微服务⾃⼰的独有配置⽂件覆盖,使⽤⾃⼰的私有配置;
可结合下图理解:
下⾯是实际的coding过程和测试⽤例;
服务app-file;
在服务对应的nacos的namespace中
1 引⼊共享配置
#共享中间件的配置
spring.fig.shared-configs[0].data-id=mid.properties
spring.fig.shared-configs[0].group=DEFAULT_GROUP
spring.fig.shared-configs[0].refresh=true
位置: 模块start下的src/main/resources/bootstrap.properties⽂件中
⾃描述的配置信息,即引⼊的共享配置⽂件列表有哪些,可以按照需要,配置各种中间件的配置信息;
花括号[0] ,⾥⾯的0是序号,如果有多个,按照数字⾃增顺序进⾏配置;
2 在nacos中新增配置⽂件
根据实际场景在nacos的test命名空间中新增配置⽂件mid.properties
3 获取配置⽤例测试
测试接⼝代码:
@ApiOperation("测试获取公共配置⽂件")
@GetMapping("/config/test")
public Response config(){
String redisConfigServers = Property("fig.servers","null");        return SingleResponse.of(redisConfigServers);
}
测试⽤例:
截图如下:
源码分析
掌握⽤法之后,深⼊分析源码,知其然⽽知其所以然;
starter调⽤封装
使⽤的starter封装;
版本: 2.2.1.RELEASE
启动的时候⾃动装配的配置如下:
org.springframework.cloud.bootstrap.BootstrapConfiguration=
com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.alibaba.cloud.nacos.NacosConfigAutoConfiguration,
com.alibaba.dpoint.NacosConfigEndpointAutoConfiguration
org.springframework.boot.diagnostics.FailureAnalyzer=
com.alibaba.cloud.nacos.diagnostics.analyzer.NacosConnectionFailureAnalyzer
分解⼀下key,看⼀下⽤途:
翻译:⼀个标记注解⽤来作为key 放在META-INF/spring.factories⽂件中,⽂件中的条⽬⽤来创建启动应⽤的上下⽂;
来源:spring-cloud-context-version.jar
value:
com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration | |
org.springframework.boot.autoconfigure.EnableAutoConfiguration | 注释太长了,不放这⾥.放到附录中。
来源:spring-boot-autoconfigure-version.jar
com.alibaba.cloud.nacos.NacosConfigAutoConfiguration,
com.alibaba.dpoint.NacosConfigEndpointAutoConfiguration | |
org.springframework.boot.diagnostics.FailureAnalyzer | A {@code FailureAnalyzer} is used to analyze a failure and provide diagnostic* information that can be displayed to the user.
_
翻译: FailureAnalyzer⽤来分析错误并提供诊断信息展⽰给到⽤户
来源: spring-boot-version.jar
com.alibaba.cloud.nacos.diagnostics.analyzer.NacosConnectionFailureAnalyzer |
然后看看都⾃动装配了什么?以及⾃动装配的过程。
springboot的⽅式调⽤;
1 NacosConfigBootstrapConfiguration
源码:
package com.alibaba.cloud.nacos;
import com.alibaba.cloud.nacos.client.NacosPropertySourceLocator;
import org.springframework.dition.ConditionalOnMissingBean; import org.springframework.dition.ConditionalOnProperty;
import t.annotation.Bean;
import t.annotation.Configuration;
/**
* @author xiaojing
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(name = "spring.abled", matchIfMissing = true) public class NacosConfigBootstrapConfiguration {
@Bean
@ConditionalOnMissingBean
public NacosConfigProperties nacosConfigProperties() {
return new NacosConfigProperties();
}
@Bean
@ConditionalOnMissingBean
public NacosConfigManager nacosConfigManager(
NacosConfigProperties nacosConfigProperties) {
return new NacosConfigManager(nacosConfigProperties);
}
@Bean
namespace是干嘛的
public NacosPropertySourceLocator nacosPropertySourceLocator(
NacosConfigManager nacosConfigManager) {
return new NacosPropertySourceLocator(nacosConfigManager);
}
}
⾃动装配流程:
配置⽂件组装源码:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。