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