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

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

时间:2023-06-14 19:44:23浏览次数:58  
标签:场景 SpringBoot 数据库 args enableSQL public main class

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();
            }
        }
    }
    

标签:场景,SpringBoot,数据库,args,enableSQL,public,main,class
From: https://www.cnblogs.com/zhaohaodong/p/17481205.html

相关文章

  • 【后端面经-数据库】MySQL的事务隔离级别简介
    (【后端面经-数据库】MySQL的事务隔离级别简介)0.事务的概念事务指的是一连串的集中操作指令,一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点,简记作ACID:A-Atomicity:原子性,事务的执行必须保证所有的动作都执行完毕;C-Consistency:一致性,事务的执行必......
  • 当 GraphQL 遇上图数据库,便有了更方便查询数据的方式
    人之初,性本鸽。大家好,我叫储惠龙(实名上网),你可以叫我小龙人,00后一枚。目前从事后端开发工作。今天给大家带来一个简单的为NebulaGraph提供GraphQL查询支持的DEMO,为什么是简单的,因为本来想完成更多工作再给大家介绍的,但是上个月太忙加上下个月更忙,但是我又很想白嫖一下Neb......
  • 【后端面经-数据库】MySQL的事务隔离级别简介
    目录0.事务的概念1.三类问题2.事务隔离级别3.操作指令4.总结5.参考博文0.事务的概念事务指的是一连串的集中操作指令,一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点,简记作ACID:A-Atomicity:原子性,事务的执行必须保证所有的动作都执行完毕;C-Co......
  • 【SpringBoot】注解
    Controller-@RestController-@RequestMapping("/path")Controller内方法@GetMapping("/path/{xxx}")@PostMapping("/path")POST处理函数参数@RequestBody//将Json体参数值按照参数名传入类内对应字段中GET处理函数参数@PathVariable//按名称获取请求路径中的变......
  • 互动场景下的低延迟编码技术
    上海交通大学教授宋利在LiveVideoStackCon2020线上峰会的演讲内容整理而成,从分析视频传输系统延迟入手,详细介绍视频编码延迟的产生机制,总结优化编码延迟的技术手段和业界典型的低延迟编码方案,讨论不同场景的延迟要求,并对后续技术演进发展方向进行展望。文/宋利整理/LiveVideoSt......
  • 【React工作记录一百零五】springBoot+vue实现登录操作和JWT验证
    前言大家好我是歌谣今天继续进行前后端的一个学习目前进入的是javaweb部分今天来聊聊登录部分和JWT验证部分的书写用户登录loginControllerpackagecom.itheima.controller;importcom.itheima.pojo.Emp;importcom.itheima.pojo.Result;importcom.itheima.service.EmpSer......
  • 如何使用MySQL存储过程简化数据库操作
    在数据库管理领域,MySQL已成为最受欢迎和最可靠的选择之一。MySQL不仅提供了强大的数据存储能力,还提供了一种称为“过程”的强大功能,使开发人员能够简化复杂的数据库操作。在本教程中,我们将深入研究MySQL过程的概念并探索它们的好处。然后,我将提供有关如何有效使用它们的分步......
  • Java8-Consumer的使用场景
    Java8的Consumer比较抽象。结合几个例子来看看常用的使用场景有以下几个:把方法作为函数的入参Java8中可以使用Consumer来实现在函数的入参中传递方法,这个如果熟悉js的话可能会比较好理解一些。在某些情况下,不能直接使用某个对象的方法,需要把方法传递到另一个函数里面去执行,那么......
  • IDEA 退出 springboot 应用没有关闭
    使用idea发现的问题。当运行spring-boot:run启动项目后,在控制台关闭项目。再次启动项目,报错端口被占用  Addressalreadyinuse:bind。后发现虽然使用idea控制台关闭项目,但是实际上该项目依旧在运行中,只能通过kill进程id来解决。但是这种方式极不方便,总不能每次都......
  • 使用Mybatis生成树形菜单-适用于各种树形场景
    开发中我们难免会遇到各种树形结构展示的场景。比如用户登录系统后菜单的展示,某些大型购物网站商品的分类展示等等,反正开发中会遇到各种树形展示的功能,这些功能大概处理的思路都是一样的,所以本文就总结一下树形结构的代码生成,在开发的时候套用这种结构就可以了。好了正文开始,首先......