springboot 多模块依赖多配置文件处理

背景

Springboot 多模块有依赖关系,每个模块又都有几个环境,需要不同的配置环境。实际工程中,我们常常有 web 模块依赖 service 模块,service 模块依赖 dao 模块。
以数据库配置为例,若都把配置文件写在当前启动的模块中,我们就需要在 web 模块中写一遍数据库配置,如果有多个 web 模块就需要写多遍。service 和 dao 要单独启动或本地测试时,还要写配置文件。这样整个工程中就会有很多冗余的配置。
因此,我们需要进行配置文件的依赖处理,使数据库配置只存在于 dao 模块中,上层模块直接调用 dao 模块中的指定环境配置文件。

应用举例

假设
有两个不同的环境:测试环境 test,线上环境 online。
有两个不同的模块:父模块 my-service 是业务服务,子模块 my-dao是数据库操作。
数据库配置在 my-dao 中,my-service 需要根据不同的环境调用 my-dao 中相应的配置文件。

my-service 配置文件结构如下:

my-service
	src
		main
			java
			resources 
				application.properties
				application-test.properties	
				application-online.properties

application.properties 配置文件内容:
指明所使用的具体配置,my-service 选择 test 环境,使用 application-test.properties 配置文件。

 spring.profiles.active=test

application-test.properties 配置文件内容:
指明所依赖的 my-dao 中的配置,引入模块 my-dao 中的 test 环境配置。

 spring.profiles.include=dao-test

application-online.properties 配置文件内容:
指明所依赖的 my-dao 中的配置,引入模块 my-dao 中的 online 环境配置。

 spring.profiles.include=dao-online

my-dao 配置文件结构如下:

my-dao
	src
		main
			java
			resources 
				application.properties					// my-dao的公共配置,my-service 调用时不启作用
				application-dao-online.properties		// 写了数据库层 online 环境数据库配置
				application-dao-test.properties 		// 写了数据库层 test 环境数据库配置
若 my-dao 需要单独启动/本地测试
  1. my-dao 的中 application.properties 可以写入 spring.profiles.active=dao-test,指明使用 test 环境。
  2. 增加 MyDaoApplication.java 如下
@SpringBootApplication
@MapperScan("org.my.dao.mapper")
public class MyDaoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyDaoApplication .class, args);
    }
}
my-service 模块中的 Application
@EnableTransactionManagement
@SpringBootApplication(scanBasePackages = "org.my")
@MapperScan("org.my.dao.mapper")
public class MyServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyServiceApplication .class, args);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值