SpringBoot学习2之配置文件

本文介绍了SpringBoot如何添加自定义属性到application.yml配置文件,并通过@Value注解或@ConfigurationProperties赋值给实体类。此外,还详细讲解了如何设置多环境配置文件,包括开发、测试和生产环境的切换方法。了解这些内容能帮助开发者更好地管理和使用SpringBoot项目中的配置。

SpringBoot学习2之配置文件

 

 

微信公众号" IT程序猿进化史", 共同学习进化~

https://darylliu.github.io/archives/c3b398db.html

 

 

虽然SpringBoot号称零配置,但是在实际开发过程中,我们常常需要进行一些额外信息的配置,比如数据库连接的一些参数,或者分布式服务的相关配置等等,那么这个时候就有可能用到我们本章的内容。

SpringBoot 添加自定义属性

当我们在创建一个springboot项目时,可以在其src/main/java/resources目录下创建一个名为application.properties的文件或者application.yml文件作为配置文件,springboot会默认对该名称的文件进行读取。

在application.yml中添加如下属性

 

1

2

3

 

test:

id: 1

name: bob

注意,不要使用tab,制表符等进行缩进,请使用空格

如果想要在程序中读取以上属性,可以使用@Value(“${属性名}”)注解

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

@Controller

public class App {

@Value("${test.id}")

private String id;

@RequestMapping("/")

public String hello(Model model) {

model.addAttribute("id", id);

return "hello";

}

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

}

将属性赋值给实体类

当属性非常多的时候,如果每一个都使用@Value注解,则过于麻烦,这个时候,我们可以根据这些属性,给他们创造一个统一的实体类,比如

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

 

@ConfigurationProperties(prefix = "test")

@Component

public class ConfigBean {

private String name;

private int id;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

}

同时需要在application类添加@EnableConfigurationProperties

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

 

@SpringBootApplication

@Controller

@EnableConfigurationProperties({ConfigBean.class})

public class App {

@Autowired

ConfigBean configBean;

@RequestMapping("/")

public String hello(Model model) {

model.addAttribute("id", configBean.getId());

return "hello";

}

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

}

启动工程,信息读取成功

@EnableConfigurationProperties注解中可以存放多个类,用,分割,比如

 

1

 

@EnableConfigurationProperties({ConfigBean1.class,ConfigBean2.class })

 

同时,如果你的配置信息不想放到application.yml这个默认的文件中,你也可以将其放到自己的配置文件中,比如该自定义配置文件叫做”myapplication.yml”,然后在配置实体类上额外添加注解即可。

 

1

 

@PropertySource(value = "classpath: myapplication.yml")

 

多环境配置文件

在实际开发过程中,为了保证线上程序的正确性,常常使用多套配置,比如开发一套配置,测试一套配置,实际生产一套配置,而我们需要在这些多个配置之间来回切换。
我们可以通过在代码中更改@PropertySource 中的内容来进行切换,但是这样过于麻烦

其实我们可以采用如下手段:

首先,给各个开发环境进行命名

  1. application-test.yml:测试环境
  2. application-dev.yml:开发环境
  3. application-prod.yml:生产环境

然后只需要在application.yml中配置

 

1

2

3

 

spring:

profiles:

active: dev

当需要切换的时候直接将active这一属性进行切换即可(test/dev/prod)

比如我们在test 中

 

1

2

 

server:

port: 8081

在dev中

 

1

2

 

server:

port: 8082

 

然后现在运行就会发现,浏览器访问地址变为了http://localhost:8082/

说明:只要格式按照application-{环境标识}.yml或者application-{环境标识}.properties即可,不一定必须是dev/test/prod/,以上命名只是为了方便区分。

 

 

详情请访问我的博客:点击打开链接

 

微信公众号" IT程序猿进化史", 共同学习进化~

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值