SpringBoot:在properties和yaml两种文件中添加配置时的值跳转问题

郎家岭伯爵 2023年12月26日 510次浏览

前言

今天在 SpringBoot 中使用 import org.springframework.beans.factory.annotation.Value; 中的 @Value() 注解注入值时,发现 Ctrl + 鼠标左键 无法正常跳转到 yaml 中的配置项。

解决

yaml 文件无法跳转:

我在 yaml 中的配置项如下:

spring:
  application:
    name: 郎家岭伯爵
  redis:
    ssl: false
    host: redis-18896.c251.east-us-mz.azure.cloud.redislabs.com
    port: 18896
    database: 0
    timeout: 1000

properties 文件正常跳转:

我在 properties 文件中添加了同样层次的配置项,同样使用 Ctrl + 鼠标左键 可以正常跳转。properties 中的配置信息如下(其它配置省略):

spring.redis.host=test

基于以上信息,我推测是 IDEA 无法识别,数据应该是可以读取的。因此我仅在 yaml 中配置信息后,启动项目进行测试。

测试类如下:

package com.langjialing.helloworld;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class HelloWorldApplicationTests {

    @Value("${spring.redis.host}")
    private String redisHost;

    @Test
    void test1(){
        System.out.println(redisHost);
    }

}

输出:

redis-18896.c251.east-us-mz.azure.cloud.redislabs.com

正常读取到 yaml 中的配置项信息。

总结

综上,SpringBoot 使用 @Value() 注解注入值时,如果把配置项写在 yaml 文件中,在 IDEA 中使用 Ctrl + 鼠标左键 无法跳转到配置项,但配置信息是可以正常读取的