根据不同场景(是否需要连接数据库)启动SpringBoot

1. 场景描述

  • 描述:使用场景:

    • 项目中的一部分业务不需要进行数据库操作,当只使用这部分功能时,希望程序启动时可以不进行数据库的连接
    • 项目中需要数据库相关的业务时再进行配置
  • 注意:

    • Springboot在启动时会根据pom.xml启动器来判断是否开启相应的自动配置
  • 解决方式:设置一个包装类,根据配置文件来判断是否进行连接数据库的操作

2. 使用示例

  1. 创建两个启动类,分别代表有数据库时和没有数据库时

    1. 创建需要数据库的MyBootNeedSql启动类:

      @SpringBootApplication(exclude = {})
      @ComponentScan(basePackages = {"xxx","xxx"})
      public class MyBootNeedSql {
          public static void main(String[] args) {
              SpringApplication.run(MyBootNeedSql.class, args);
          }
      }
      
    2. 创建不需要数据库的MyBootNoNeedSql启动类:

      @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, MybatisPlusAutoConfiguration.class, DruidDataSourceAutoConfigure.class})
      @ComponentScan(basePackages = {"xxx"})
      public class MyBootNoNeedSql {
          public static void main(String[] args) {
              SpringApplication.run(MyBootNoNeedSql.class, args);
          }
      }
      
  2. application.yml中设置spring.main.allow-bean-definition-overriding=true,若不开启,则会报错

  3. 在项目的根路径下编写config/start.properties配置文件

    enableSQL=true
    
  4. 创建项目启动的MyBootWrapper包装类,使用时根据当前类进行启动

    public class MyBootWrapper {
    
        public static void main(String[] args) {
            try {
                Properties confProp = Config.getProperties("config/start.properties");
                String enableSQL = confProp.getProperty("enableSQL");
                if ("true".equals(enableSQL)) {
                    MyBootNeedSql.main(args);
                } else if ("false".equals(enableSQL)) {
                    MyBootNoNeedSql.main(args);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
posted @   alexmelt  阅读(282)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示