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的配置属性:

  

 

  就动态读取到了。

posted @   Doyourself!  阅读(280)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2019-08-23 一次升级jar包遇到的空指针异常
点击右上角即可分享
微信分享提示