若依框架源码—3-(启动类)
主干——ruoyi-admin
模块文件图片

启动类 RuoYiApplication

启动应用这个与我们默认创建的项目的启动主要有两点不同
🌟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);
}
}

有两个数据源
为了对比,我新建了一个空的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);
}
}
}

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

成功实现了自动配置。
若依框架,是通过手动配置来注入数据源,而并非通过我们常用的自动配置,当然我们如今即使 删除 若依框架的 排除自动配置数据源 这个代码,也不会导致程序运行错误,这是因为当项目中有数据源的配置时便会优先使用项目中的数据源,而并非自动配置生成的。
💡问:那么为什么还要 使用exclude 来进行排除?
(1)手动配置可以避免自动配置出错,而且手动配置更加灵活
(2)相当于明确说明 “此项目的数据源是手动配置的”,让配置逻辑更加清晰
⌛️若依框架的数据源bean 这两个文件的包在
masterDataSource:
package com.ruoyi.framework.config;
DynamicDataSource:
package com.ruoyi.framework.datasource;
这些位置
当我写到 framework 模块时 会加入链接,进一步说明
🌟2. 项目启动完成后打印"RY"
这个是为了更加突出 RY 框架,个性化处理,没有什么好说的。。。

浙公网安备 33010602011771号