• [SpringBoot] SpringBoot-04-读取yaml配置文件


    1. 单个属性

    yaml 内的属性如下:

    server:
      port: 80
    
    • 1
    • 2

    只需在成员变量上注解 @Value(“${属性名}”) 即可,用美元符号获取属性值

    如下例:

    @RestController
    @RequestMapping("/")
    public class DemoController {
    
        @Value("${server.port}")
        private String port;
    
        @GetMapping
        public String func() {
            return "server port: " + port;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. 全部属性

    yaml 内的属性如下:

    server:
      port: 80
    logging:
      level: 
        root: warn
    
    • 1
    • 2
    • 3
    • 4
    • 5

    定义 Environment 成员变量,注解 @Autowired 即可,通过 .gerProperty(属性名) 函数来获取属性值

    如下例:

    @RestController
    @RequestMapping("/")
    public class DemoController {
    
        @Autowired
        private Environment environment;
    
        @GetMapping
        public String func() {
            String port = environment.getProperty("server.port");
            String level = environment.getProperty("logging.level.root");
            return "server port: " + port + "\n"
                    + "logging level: " + level;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3. 对象属性

    yaml 内的属性如下:

    mybook:
      name: 《SpringBoot入门》
      price: 28.00
      tags: [编程, Java, Spring]
    
    • 1
    • 2
    • 3
    • 4

    首先要定义一个 bean,给类注解 @Component 表示添加到 Spring 容器,注解 @ConfigurationProperties 设置属性 prefix 为配置中的对象名,如下例:

    @Component
    @ConfigurationProperties(prefix = "mybook")
    public class Book {
        private String name;
        private Double price;
        private String[] tags;
    
    	// 省略了成员方法
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    使用自动装配填充即可,如下例:

    @RestController
    @RequestMapping("/")
    public class DemoController {
    
        @Autowired
        private Book book;
    
        @GetMapping
        public String func() {
            return book.toString();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    [补充]

    • 当有多个类注解 prefix 的值为同一个对象时,IDEA会报错 Duplicated prefix,但不影响项目运行

    补充

    在刚才自定义 bean 时,IDEA 会报一个警告 Spring Boot Configuration Annotation Processor not configured,显示在页面的顶部,这个警告不会影响项目运行

    在 pom.xml 中添加下面的依赖就可以解决:

    <dependency>
    	<groupId>org.springframework.bootgroupId>
    	<artifactId>spring-boot-configuration-processorartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    莫队 从零基础到入门 超详细
    taro全局配置页面路由和tabBar页面跳转
    当变速箱密封件损坏时会发生什么?
    【学习笔记39】获取DOM标签对象
    MIT课程分布式系统学习07——Fault Tolerance raft2
    Helix QAC更新至2022.1版本,将持续提供高标准合规覆盖率
    STM32WB55开发(6)----FUS更新
    深度卷积神经网络的整体运行流程(以alexnet为例)
    elasticsearch操作
    02数据结构与算法刷题之【哈希表】篇
  • 原文地址:https://blog.csdn.net/Cey_Tao/article/details/126711146