spring boot多环境自定义配置文件

本文介绍了一种使用Spring框架进行自定义配置的方法,包括多环境配置、多数据源配置及缓存配置等。通过示例展示了如何利用@Value和@ConfigurationProperties进行属性值注入,并提供了测试方法。

自定义配置文件+多环境,多数据源,redis缓存和多线程等。

网上有很多是用application-{profile}.properties实现的,这种一个profile放到一种文件的做法,我不太喜欢,我还是喜欢一大堆文件用一个profile管理。

像这种方式,dev是测试环境,prd是正式环境的。

application.properties里面的内容为spring.profiles.activ=dev,代表默认激活dev

dev/basic.properties的内容为name=tom,prd下则为name=jack

下面我建立properties包,下面的文件分别对应配置文件,用来读取内容。

对于application.properties的内容直接用@Value读取即可,具体内容为

@Component

public class ApplicationProperties {

public static String env;

@Value("${spring.profiles.activ}")

public void setEnv(String env) {

ApplicationProperties.env = env;

}

}

 而我们的自定义文件需要指定路径,记得带上${spring.profiles.activ},然后用@Value读取即可,只不过用@Value,需要在非静态set方法注入,像刚刚ApplicationProperties做的那样,在这里我们用@ConfigurationProperties,直接有静态set方法就可注入(没set则注入不了)。BasicProperties的内容如下:

@Component

@PropertySource("classpath:${spring.profiles.activ}/basic.properties")

@ConfigurationProperties

public class BasicProperties {

public static String name;

public static void setName(String name) {

BasicProperties.name = name;

}

}

 然后随便写个HelloController测试一下吧,我的属性都是静态变量,可以直接访问,如果你用私有的,再当成组件注入也是可以的,他们都有@Component管理,内容如下:

@RestController

public class HelloController {

@RequestMapping("/hello/app")

public String app(){

return ApplicationProperties.env;

}

@RequestMapping("/hello/basic")

public String basic(){

return BasicProperties.name;

}

}

启动服务,访问http://localhost:8080/hello/app 显示dev,

访问http://localhost:8080/hello/basic显示tom 

然后用maven命令打包(package),在target目录下可以看到jar包,比如我的打开cmd,用命令启动(记得激活prd)

java -jar D:/workspace/moss-auto/target/moss-auto-0.0.1-SNAPSHOT.jar --spring.profiles.activ=prd

然后

访问http://localhost:8080/hello/app 显示prd,

 

访问http://localhost:8080/hello/basic显示jack 

### 如何在 Spring Boot 中指定自定义配置文件位置 在 Spring Boot 应用程序中,可以通过多种方式来指定自定义配置文件的位置。以下是几种常见的方式: #### 使用命令行参数 可以在启动应用程序时通过命令行参数传递配置文件的位置。例如: ```bash java -jar myapp.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties,file:./config/application.properties ``` 这会告诉 Spring Boot 从多个位置加载配置文件,并按照顺序覆盖相同的属性[^1]。 #### 修改 `application.properties` 或 `application.yml` 也可以直接在 `application.properties` 或者 `application.yml` 文件里指明其他外部配置文件的位置: 对于 properties 文件来说: ```properties spring.config.additional-location=file:///path/to/config/ ``` 而对于 yml 文件则是这样写: ```yaml spring: config: additional-location: file:///path/to/config/ ``` 这种方式允许开发者灵活地添加额外的配置源而无需改变原有的配置文件结构[^3]。 #### 利用环境变量 还可以利用操作系统的环境变量来设定配置文件路径,在 Linux/Unix 系统上可以这样做: ```bash export SPRING_CONFIG_LOCATION=/path/to/config/ ``` 而在 Windows 上则应使用 set 命令代替 export 。之后再运行 jar 包即可自动识别该目录下的配置文件[^2]。 以上方法均能有效地帮助用户更改默认情况下位于 classpath 下的应用程序配置文件的位置,从而满足不同场景下对资源配置的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值