当前位置: 首页 > news >正文

若依框架源码—3

主干——ruoyi-admin

模块文件图片

image

启动类 RuoYiApplication

image
启动应用这个与我们默认创建的项目的启动主要有两点不同

  1. exclude = { DataSourceAutoConfiguration.class } 排除了自动配置的数据源
  • 为什么要排除自动配置的数据源?
    首先要知道 当项目启动时,会检测是否有数据源配置,没有就会自动注入一个数据源,有配置好的数据源就按照配置好的注入。
    首先我们查看 若依的容器中的数据源bean 修改启动类,通过从容器中获取数据源类名单
点击查看代码
public static void main(String[] args){// System.setProperty("spring.devtools.restart.enabled", "false");ConfigurableApplicationContext context = SpringApplication.run(RuoYiApplication.class, args);System.out.println("(♥◠‿◠)ノ゙  若依启动成功   ლ(´ڡ`ლ)゙  \n" +" .-------.       ____     __        \n" +" |  _ _   \\      \\   \\   /  /    \n" +" | ( ' )  |       \\  _. /  '       \n" +" |(_ o _) /        _( )_ .'         \n" +" | (_,_).' __  ___(_ o _)'          \n" +" |  |\\ \\  |  ||   |(_,_)'         \n" +" |  | \\ `'   /|   `-'  /           \n" +" |  |  \\    /  \\      /           \n" +" ''-'   `'-'    `-..-'              ");String[] beanNames = context.getBeanNamesForType(DataSource.class);System.out.println("当前容器中有 " + beanNames.length + " 个 DataSource,分别是:");for (String name : beanNames) {System.out.println(" - " + name);}}
运行项目可以看到

image

有两个数据源
为了对比,我新建了一个空的springboot的项目 引入 mysql 相关依赖
pom:

点击查看代码
	<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>
启动类
点击查看代码
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Demo1Application {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(Demo1Application.class, args);String[] beanNames = context.getBeanNamesForType(DataSource.class);System.out.println("当前容器中有 " + beanNames.length + " 个 DataSource,分别是:");for (String name : beanNames) {System.out.println(" - " + name);}}}
启动之后 可以发现

image

没有任何数据源,因为我们使用了 exclude = {DataSourceAutoConfiguration.class}
当删除 exclude = {DataSourceAutoConfiguration.class}
我们又会发现

image

成功实现了自动配置。

若依框架,是通过手动配置来注入数据源,而并非通过我们常用的自动配置,当然我们如今即使 删除 若依框架的 排除自动配置数据源 这个代码,也不会导致程序运行错误,这是因为当项目中有数据源的配置时便会优先使用项目中的数据源,而并非自动配置生成的。
问:那么为什么还要 使用exclude 来进行排除?
(1)手动配置可以避免自动配置出错,而且手动配置更加灵活
(2)相当于明确说明 “此项目的数据源是手动配置的”,让配置逻辑更加清晰

若依框架的数据源bean 这两个文件的包在
masterDataSource:
package com.ruoyi.framework.config;
DynamicDataSource:
package com.ruoyi.framework.datasource;
这些位置
当我写到 framework 模块时 会加入链接,进一步说明

  1. 项目启动完成后打印"RY"
    这个是为了更加突出 RY 框架,个性化处理,没有什么好说的。。。
http://www.gsyq.cn/news/57748.html

相关文章:

  • icmp linux
  • 医思倍:构建全面赋能体系,助力医学工作者突破自我
  • 人口出生率对房价的影响有多大?从经济学角度来看待房价增长率
  • 为什么在虹吸作用下的四五线城市终将越来越衰落?
  • AcWing 908
  • java电梯调度三次作业总结
  • iceberg sql怎样运用
  • Windows 内网部署共享Neko浏览器
  • iceberg sql怎样使用
  • 2025年11月热泵、电锅炉、中央空调推荐榜:商用、养殖、工建场景源头厂家选择指南
  • Linux初级之定时任务
  • 2025热泵、电锅炉、中央空调怎么选?盛海空调,源头厂家,商用、养殖、工建场景行业标杆
  • 快速入门(不用指令),使用VSCode和Git管理代码和提交到远程服务器(GitHub) - 教程
  • Spring AI 代码分析(五)--RAG 分析
  • iceberg sql怎么写
  • iceberg sql如何用
  • CSAPP Notes Labs
  • VSCODE协助keil开发时无法识别uint8_t
  • 关于面向对象程序设计的第一阶段大作业总结
  • Spring Boot核心知识点全解析 - 实践
  • 离职/毕业-清理电脑
  • `np.array` 和 `np.ndarray`是什么关系?
  • 工作草稿
  • 详细介绍:在Windows中的Docker与WSL2的关系,以及与WSL2中安装的Ubuntu等其它实例的关系
  • 团队作业3--需求改进与系统设计
  • OI 笑传 #33
  • 50040_基于微信小程序的项目管理系统
  • hyper for linux
  • 锂矿及其投资机会
  • 获深圳人才集团认可!「张张讲AI」AI资讯公众号解读AI动态,讲师提供定制化咨询