SpringBoot系列二:SpringBoot配置文件

悠悠 2021-09-17 15:28 541阅读 0赞

SpringBoot给我们提供了一个免配置的环境,但是有些时候,需要修改一些配置去满足需求,所以要了解配置,然后更好的去运行、去修改。

SpringBoot在创建项目的时候,给我们创建了一个全局的配置文件:application.properties或者application.yml,yml配置文件更加简洁一点,有层次感,不过根据个人喜欢,比较钟爱application.properties配置,IDEA还会提供提示。

在启动spring boot web项目的时候,会提供一个默认端口,个人根据需求可进行修改,默认访问路径都是‘/’,也可根据需求修改访问路径。接下来就通过例子来说明(还是建立在SpringBoot系列一中的案例来,不懂得可以去看一):

一:常规配置

1.修改application.properties配置文件

  1. server.port=8889
  2. server.servlet.context-path=/springBoot

或者application.yml文件

  1. server:
  2. port: 8889
  3. servlet:
  4. context-path: /springBoot

2,重新运行项目

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NDc5MjQ2_size_16_color_FFFFFF_t_70

运行项目,要是报以上错误,说明当前配置得端口号被占用了,可以重新换一个端口号

20190110110812931.jpg

二:自定义配置属性

1.在application.properties配置文件中新增一些自定义得配置,本文是以用户的年龄和姓名属性举例子:

  1. auth.name = xiaoming
  2. auth.age = 24

2.在读取文件信息的地方使用@Value,引用配置文件信息。

  1. @RestController
  2. public class IndexController {
  3. @Value("${auth.name}")
  4. private String userName;
  5. @Value("${auth.age}")
  6. private Integer age;
  7. @RequestMapping("/")
  8. public String firstTest(){
  9. return "Hello Spring Boot ! \n" +
  10. "user name = "+userName+", age = "+age;
  11. }
  12. }

3、重新运行项目,显示结果如下

20190110115623662.jpg

三:类型安全的配置

在自定义配置的基础上,我们使用@Value一个一个的注入属性值,有时候会配置多个,会显得很麻烦,可以使用@ConfigurationProperties将配置信息和一个bean及其属性关联,从而实现类型安全的配置。

1.还是使用上面的application.properties 中的auth配置信息,创建一个bean

  1. @Component
  2. @PropertySource("classpath:application.properties")
  3. @ConfigurationProperties(prefix = "auth")
  4. public class AuthDo {
  5. private String name;
  6. private String age;
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public String getAge() {
  14. return age;
  15. }
  16. public void setAge(String age) {
  17. this.age = age;
  18. }
  19. }

在本文中因为直接使用的是application.properties中的配置信息,@PropertySource指定文件地址可以不写,因为默认地址就是指向application.properties的,要是使用其他的配置文件,就可以使用该属性指定文件位置。@ConfigurationProperties指定位置只在低版本中可以,高版本中去掉了location等属性。其中prefix指定配置文件中key值。

2.踩坑,在第一次引用的是报错的,说找不到配置文件。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NDc5MjQ2_size_16_color_FFFFFF_t_70 1

根据官网的提示需要引用spring-boot-configuration-processor.jar

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-configuration-processor</artifactId>
  4. <optional>true</optional>
  5. </dependency>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NDc5MjQ2_size_16_color_FFFFFF_t_70 2

以上问题已解决!

3.检验代码

  1. @RestController
  2. public class ConfigController {
  3. @Resource
  4. private AuthDo authDo;
  5. @RequestMapping("/getUser")
  6. public String getUserMessage(){
  7. return "the auth message is : name = "+authDo.getName()+" ,age="+authDo.getAge();
  8. }
  9. }

4.运行查看结果:

20190110182425392.jpg

四、多环境配置

在实际的开发中,我们会配置不同的环境,比如测试环境(test)、线上环境(prod)、开发环境(dev),springBoot提供了针对不同的环境的配置的支持,全局profile使用application-{profile}.properties,如application-dev.properties.

通过在application.properties配置文件中设置spring.profiles.active=dev来指定当前环境。通过看以下操作。

1.各个环境的配置如下,通过端口号来体验。

application-dev.properties

server.port=2222

application-prod.properties

server.port=2223

application-test.properties

server.port=2224

2019011019075142.jpg

2.在application.properties中配置信息,指定开发环境:spring.profiles.active=dev,运行项目

通过端口号2222可以访问,其他的端口号不行。

发表评论

表情:
评论列表 (有 0 条评论,541人围观)

还没有评论,来说两句吧...

相关阅读