根据不同场景(是否需要连接数据库)启动SpringBoot
1. 场景描述
-
描述:使用场景:
- 项目中的一部分业务不需要进行数据库操作,当只使用这部分功能时,希望程序启动时可以不进行数据库的连接
- 项目中需要数据库相关的业务时再进行配置
-
注意:
- Springboot在启动时会根据pom.xml启动器来判断是否开启相应的自动配置
-
解决方式:设置一个包装类,根据配置文件来判断是否进行连接数据库的操作
2. 使用示例
-
创建两个启动类,分别代表有数据库时和没有数据库时
-
创建需要数据库的
MyBootNeedSql
启动类:@SpringBootApplication(exclude = {}) @ComponentScan(basePackages = {"xxx","xxx"}) public class MyBootNeedSql { public static void main(String[] args) { SpringApplication.run(MyBootNeedSql.class, args); } }
-
创建不需要数据库的
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); } }
-
-
在
application.yml
中设置spring.main.allow-bean-definition-overriding=true
,若不开启,则会报错 -
在项目的根路径下编写
config/start.properties
配置文件enableSQL=true
-
创建项目启动的
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(); } } }
分类:
Java
, Java / SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构