SpringBootApplication无法从application.yml文件加载属性

Kri*_*has 7 java spring yaml spring-boot

配置类,

@Configuration
public class SpringContext {
@Bean
public BlockingQueue<String> queue(@Value("${queue.size}") int queueSize) {
    return new LinkedBlockingQueue<>();
   }
}
Run Code Online (Sandbox Code Playgroud)

主要班级,

@SpringBootApplication
public class SpringContextTest {

    public static void main(String[] args) {
        final SpringApplication springApplication = new SpringApplication(SpringContext.class);
        springApplication.setWebEnvironment(false);
        springApplication.run();
        System.out.println("queue.size" + System.getProperty("queue.size"));
    }

}
Run Code Online (Sandbox Code Playgroud)

application.yml,

queue.size: 10
Run Code Online (Sandbox Code Playgroud)

在启动主类时,我收到以下错误,

Caused by: java.lang.NumberFormatException: For input string: "${queue.size}"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_144]
Run Code Online (Sandbox Code Playgroud)

我是否缺少一些注释?在我的理解中,我使用了Spring启动应用程序所需的最小注释.我看过一些类似的帖子,但没有帮助.还尝试使用--spring.config.location.

我的Spring入门版:1.3.6.RELEASE

Man*_*aka 1

Spring Boot 文档的外部化配置部分解释了您可能需要的所有详细信息。

根据您在主类中加载属性的示例,您可以执行以下操作,

  1. 首先仔细检查 yaml 文件的位置,它应该位于 /src/main/resources/application.yaml
  2. 内容应类似于以下示例,

    应用程序:
        值1:12
        value2: 字符串值
    
  3. 示例代码,

    包 com.demo;
    
    导入 org.springframework.boot.SpringApplication;
    导入 org.springframework.boot.autoconfigure.SpringBootApplication;
    导入 org.springframework.core.env.Environment;
    
    @SpringBootApplication
    公开课应用程序{
    
    
    public static void main( String[] args ){
        SpringApplication app = new SpringApplication(App.class);
        Environment env = app.run(args).getEnvironment();
    
        String value1 = env.getProperty("app.value1");
        String value2 = env.getProperty("app.value2");
    
        System.out.println("---------------- "+value1);
        System.out.println("---------------- "+value2);
    
    }
    
    Run Code Online (Sandbox Code Playgroud) }