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

自定义配置文件+多环境,多数据源,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 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值