当前位置:   article > 正文

SpringBoot 02 外部配置文件applicatiion.properties_springboot 2.0 外部配置文件

springboot 2.0 外部配置文件


全局配置文件

SpringBoot使用application.properties或者applicaiton.yaml文件作为全局配置文件,文件位置一般在src/main/resource目录下,使用Spring Initializer方式构建或者https://start.spring.io/ 构建Spring Boot项目后会在src/main/resource目录下自动创建一个名称为applicatiion.properties 文件

  1. src
  2. ├─main
  3. │ ├─java
  4. │ └─resources
  5. │ application.properties
  6. └─test

application文件可以实现定义Spring Boot 项目的相关属性,可以是系统属性,命令参数,变量等,applicatiion.properties和application.yamal 文件中可以定义的内容是相同的,只是格式不同, 例如上文提到可以修改server.prot属性将默认端口从8080修改为其他端口

application.properties定义端口,使用“key=value”格式

server.port=9090

application.yaml定义端口,使用 “key: 空格value ”格式

  1. server:
  2. port: 9090

  • YAML文件的扩展名可以使用.yml或者 .yaml
  • application.yml文件使用 “key: 空格value ”格式,使用锁紧控制层级关系所以看起来更直观简洁一些


读取全局配置文件

读取全局配置有两种方式

  • 使用@Value注入属性,读取配置文件中的属性逐个注入到对应的属性中,可省略setXX方法
  • 使用@Component + @ConfigurationProperties注入配置文件属性,实现将配置文件中的属性映射到类组件中

1.@Value注入方式

application.yaml配置文件中自定义属性

  1. ##自定义属性用于测试
  2. project:
  3. author:
  4. name: PNZ.BeijingL
  5. from: StarCraft PNZ TEAM

创建PropertiesController对象使用@Value注入属性信息

  1. package com.boot.basic.conf;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. @RestController
  6. public class PropertiesController {
  7. @Value("${project.author.name}")
  8. private String author;
  9. @Value("${project.author.from}")
  10. private String from;
  11. /**
  12. *方式 使用@Value注入属性,读取配置文件中的属性逐个注入到对应的属性中,可省略setXX方法
  13. * @return
  14. */
  15. @RequestMapping("/author")
  16. public String getAuthor() {
  17. return "getAuthor: Name:" + author + " from:" + from;
  18. }
  19. }

启动后访问 http://127.0.0.1:8080/author

2.@Component + @ConfigurationProperties注入方式

修改application.yaml配置文件中自定义属性

  1. ##自定义属性用于测试
  2. project:
  3. name: Demo for Spring Boot
  4. version: 0.0.1
  5. author:
  6. name: PNZ.BeijingL
  7. from: StarCraft PNZ TEAM

创建项目信息类

  • @Component //将本类作为Bean组件放到Spring容器中,
  • @ConfigurationProperties(prefix = "project") //通过注解prefix属性指定properites的匹配位置
  1. package com.boot.basic.conf;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.stereotype.Component;
  4. @Component
  5. @ConfigurationProperties(prefix = "project")
  6. public class ProjectSettings {
  7. private String name;
  8. private String version;
  9. //省略getter和setter
  10. @Override
  11. public String toString() {
  12. return "ProjectSettings{" +
  13. "name='" + name + '\'' +
  14. ", version='" + version + '\'' +
  15. '}';
  16. }
  17. }

修改PropertiesController对象注入ProjectSettings 对象bean

  1. @RestController
  2. public class PropertiesController {
  3. @Value("${project.author.name}")
  4. private String author;
  5. @Value("${project.author.from}")
  6. private String from;
  7. @Autowired
  8. private ProjectSettings settings;
  9. /**
  10. *方式 使用@Value注入属性,读取配置文件中的属性逐个注入到对应的属性中,可省略setXX方法
  11. * @return
  12. */
  13. @RequestMapping("/author")
  14. public String getAuthor() {
  15. return "getAuthor: Name:" + author + " from:" + from;
  16. }
  17. /**
  18. * 方式 使用@Component + @ConfigurationProperties注入配置文件属性,实现将配置文件中的属性映射到projectSettings类组件中
  19. * @return
  20. */
  21. @RequestMapping("/project")
  22. public String getProject() {
  23. return "getProject: "+settings.toString();
  24. }
  25. }

 启动后访问


自定义配置文件

resource目录下创建自定义文件myapplication.properties

  1. demo.conf.test.name=zhangsan
  2. demo.conf.test.level=99

定义配置对象MyProperties

  • @Configuration 注解表示当前类是一个自定义配置类,将其看做是Spring容器组件
  • @PropertySource("classpath:myapplication.properties") 注解指定了自定义配置文件的位置和名称
  • @EnableConfigurationProperties(MyProperties.class) , 注解使使用 @ConfigurationProperties 注解的类生效。
  • @ConfigurationProperties(prefix = "demo.conf.test") 注解将自定义配置文件中以demo.conf.test开头的属性注入到配置属性中
  1. package com.boot.basic.conf;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.context.annotation.PropertySource;
  6. @Configuration
  7. @PropertySource("classpath:myapplication.properties")
  8. @EnableConfigurationProperties(MyProperties.class)
  9. @ConfigurationProperties(prefix = "demo.conf.test")
  10. public class MyProperties {
  11. private String name;
  12. private int level;
  13. //省略getter和setter
  14. @Override
  15. public String toString() {
  16. return "MyProperties{" +
  17. "name='" + name + '\'' +
  18. ", level=" + level +
  19. '}';
  20. }
  21. }

修改PropertiesController 对象注入MyProperties 

  1. @RestController
  2. public class PropertiesController {
  3. //省略
  4. @Autowired
  5. private MyProperties myProperties;
  6. @RequestMapping("/myconf")
  7. public String getMyProperties() {
  8. return myProperties.toString();
  9. }
  10. }

访问http://127.0.0.1:8080/myconf 

如果属性配置不对时,String为null字符串,  int会取默认值0


多环境配置文件

SpringBoot资源目录下 src/main/resource,可以创建多个环境的配置文件

  1. ├─main
  2. │ ├─java
  3. │ │
  4. │ └─resources
  5. │ application-dev.properties //开发环境
  6. │ application-prod.properties //生产环境
  7. │ application-test.properties //测试环境
  8. │ application.properties //全局配置文件
  9. │ myapplication.properties //自定义配置文件
  10. └─test

 在application.properties文件中  通过spring.profiles.active属性启动使用的环境配置文件,这样就很容易切换开发环境、测试环境的配置, 例如

spring.profiles.active=dev

上一篇:SpringBoot 01 快速入门

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/157174
推荐阅读
相关标签
  

闽ICP备14008679号