当前位置: 首页 > 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.jsqmd.com/news/47980/

相关文章:

  • idea linux
  • icmp linux
  • 2024.06.02
  • STM32定时器:从基础定时到PWM高级应用
  • NCHU的PTA题目:单步电梯运行的总结与体会
  • 人口出生率对房价的影响有多大?从经济学角度来看待房价增长率
  • TIA_Portal_STEP7_Prof_Safety_WinCC_V19安装问题
  • corepack 作用
  • 2025 New CGDI K2 Key Unlock Renew Cable: Essential for Auto Key Programming Unlocking
  • AcWing 906. 区间分组
  • 为什么在虹吸作用下的四五线城市终将越来越衰落?
  • Day45(15)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management
  • 第三次团队作业:需求改进系统设计
  • AcWing 908
  • 2025最新园林景观品牌品质推荐——至大园林景观,设计、施工、绿化,三维服务筑造精品,
  • 2025/11/22 NOIP 模拟赛小记
  • icmp for linux
  • iceberg sql能查啥
  • iceberg sql能实现啥
  • iceberg sql能做什么
  • 南昌航空大学-软件学院-余思莹-第一次blog作业
  • java电梯调度三次作业总结
  • [数据压缩] LZ4 压缩算法
  • 什么是oracle的for engineered system版本
  • CAN通信数据帧与远程帧,标准格式与远程格式的区分
  • NumPy 从零开始:轻松掌握 Python 科学计算的“魔法”
  • Windows 内网部署共享Neko浏览器
  • iceberg sql怎样运用
  • Premium Multidiag TCS CDP+ V2021: Car Truck Diagnostic Tool with Bluetooth + Free Keygen
  • iceberg sql怎样使用