springcloud自动装配数据源
项目里面是springcloud+nacos的这套技术方案,之前一直没时间搞明白是怎么读取nacos里面的配置的。今天刚好想通过druid监控数据源的,想到我们的nacos都是配置好的。但是springcloud是怎么读取的呢?
带着这个问题,先是看了下项目里面是通过discovery这个注册中心插件来实现的。代码如下:
<!--项目外依赖包--> <!-- ========== 核心插件 ========== --> <!-- 1.注册中心插件 --> <dependency> <groupId>com.nepxion</groupId> <artifactId>discovery-plugin-register-center-starter-nacos</artifactId> <!-- <artifactId>discovery-plugin-register-center-starter-consul</artifactId> --> <!-- <artifactId>discovery-plugin-register-center-starter-eureka</artifactId> --> <!-- <artifactId>discovery-plugin-register-center-starter-zookeeper</artifactId> --> <version>${discovery.version}</version> </dependency> <!-- 2.配置中心插件 --> <dependency> <groupId>com.nepxion</groupId> <artifactId>discovery-plugin-config-center-starter-nacos</artifactId> <!-- <artifactId>discovery-plugin-config-center-starter-apollo</artifactId> --> <!-- <artifactId>discovery-plugin-config-center-starter-redis</artifactId> --> <!-- <artifactId>discovery-plugin-config-center-starter-zookeeper</artifactId> --> <!-- <artifactId>discovery-plugin-config-center-starter-consul</artifactId> --> <!-- <artifactId>discovery-plugin-config-center-starter-etcd</artifactId> --> <version>${discovery.version}</version> </dependency> <!-- 3.管理中心插件 --> <dependency> <groupId>com.nepxion</groupId> <artifactId>discovery-plugin-admin-center-starter</artifactId> <version>${discovery.version}</version> </dependency> <!-- 4.服务的策略编排插件 --> <dependency> <groupId>com.nepxion</groupId> <artifactId>discovery-plugin-strategy-starter-service</artifactId> <version>${discovery.version}</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>${nacos.version}</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${nacos.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
因为我们是用的nacos,注册中心以及插件都是使用的nacos相关的。但是还是没找到怎么加载数据库以及配置属性的。
看到启动类里面 有 @SpringCloudApplication 注解,点开查看源码:
继续点开@SpringBootApplication 查看源码
其实看下这个jar包,里面的spring.factories:
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
点开这个类:
点开 DataSourceInitializationConfiguration
继续看DataSourceInitializerInvoker
可以看到这个是基于spring监听,在spring启动中作为bean来启动的。初始化时候通过DataSourceProperties来获取配置。看下配置属性:
嗯,很熟悉。是基于nacos的 动态配置注解@ConfigurationProperties 来读取配置文件的。在结合我们nacos的配置属性:
就动态读取到了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2019-08-23 一次升级jar包遇到的空指针异常