热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OCP开源项目:数据库公共组件的实现(dbspringbootstarter)

OCP开源项目:数据库公共组件的实现前言企业微服务开放平台,历经多家公司生产考验基于layui前后端分离的企业级微服务架构兼容springcloudnetflix&



OCP开源项目:数据库公共组件的实现

前言


企业微服务开放平台 ,历经多家公司生产考验


  • 基于layui前后端分离的企业级微服务架构

  • 兼容spring cloud netflix & spring cloud alibaba

  • 优化Spring Security内部实现,实现API调用的统一出口和权限认证授权中心

  • 提供完善的企业微服务流量监控,日志监控能力

  • 提供完善的压力测试方案

  • 提供完善的微服务部署方案


项目演示地址

http://59.110.164.254:8066/login.html 用户名/密码:admin/admin


项目监控地址

http://47.98.236.203:3000 用户名/密码:admin/1q2w3e4r

入群学习:(备注:Coder编程)
群1:483725710(满2000)
群2:897924507


db-spring-boot-starter

前面项目中,咱们使用了db-core为整个项目提供通用的数据库处理,现在我们将采用springboot 标准starter的做法,重构项目基础组件。

编写数据库公共组件db-spring-boot-starter


image

image

image

  • 工具类

  • AOP切换数据源类

  • 多数据源定义core log


user-center代码


image

image

  • user-center pom文件使用

  • user-center application.yml

咱们想想,在不同项目中,咱们的项目是如何装配这些对象的吗?下面咱们需要揭密。


image

image

  • db-spring-boot-starter 中定义了spring.factories文件

  • DataSourceAutoConfig 中@Import(DataSourceAOP.class)

那么这些文件是如何完成加载到spring容器的呢?
此时,咱们必须回到user-center,阅读源码


image

image

image

  • @SpringBootApplication

  • @EnableAutoConfiguration

  • AutoConfigurationImportSelector

阅读到这里,我们了解到,user-center在启动时,由于@SpringBootApplication是复合注解,包含@EnableAutoConfiguration,这个类中@import了核心处理类AutoConfigurationImportSelector,这个类的核心就是将classpath中搜索所有META-INF/spring.factories配置文件
,并且将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器


springboot中的类SPI扩展机制

在springboot的自动装配过程中,最终会加载META-INF/spring.factories文件,而加载的过程是由SpringFactoriesLoader加载的。从CLASSPATH下的每个Jar包中搜寻所有META-INF/spring.factories配置文件,然后将解析properties文件,找到指定名称的配置后返回。需要注意的是,其实这里不仅仅是会去ClassPath路径下查找,会扫描所有路径下的Jar包,只不过这个文件只会在Classpath下的jar包中。


总结回顾

内部实现的关键点有


  • 1:ImportSelector 该接口的方法的返回值都会被纳入到spring容器管理中

  • 2:SpringFactoriesLoader 该类可以从classpath中搜索所有META-INF/spring.factories配置文件,并读取配置


推荐

强烈推荐一款开源项目!(OPC)微服务能力开放平台!

Nginx监控安装:Filebeat+ES+Grafana(全)

OCP开源项目:Spring Cloud Gateway模块中动态路由的实现


文末


欢迎关注个人微信公众号:Coder编程
欢迎关注Coder编程公众号,主要分享数据结构与算法、Java相关知识体系、框架知识及原理、Spring全家桶、微服务项目实战、DevOps实践之路、每日一篇互联网大厂面试或笔试题以及PMP项目管理知识等。更多精彩内容正在路上~
也分享一些杂文~

文章收录至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
欢迎关注并star~



微信公众号

推荐阅读
author-avatar
山寨西域刀羊_281
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有