繁体   English   中英

SpringBoot 不解析没有 PropertySource 注释的 @Value 属性

[英]SpringBoot does not resolve @Value properties without PropertySource annotation

我在 SpringBoot 配置文件中有一堆@Value注释字段,在标准 application.properties 中有匹配的值。 如果我不with @PropertySource("classpath:application.properties")注释配置文件with @PropertySource("classpath:application.properties")它只会将“${prop1}”字符串复制到实际变量中。

我尝试将@EnableAutoConfiguration添加到 @Configuration 类(而不是 PropertySource 注释),但它所做的只是在找不到请求的属性时中断。

SpringBoot 应该从标准的application.properties文件中自动解析属性,为什么会出现这种行为? 使用版本 2.2.2.RELEASE

更新:

答案是正确的,它不起作用的原因是我在测试中调用了这些属性。 使用@SpringBootTest注释测试可以解决此问题。 事实上,当应用程序运行时,它是@SpringBootApplication作用

正如您在本文(第 5 章)中所读到的,SpringBoot 自动管理application.properties文件。

我不知道这是否是您的问题,因为我还没有看到代码,但是在 Spring Boot 中, Application类应该用@SpringBootApplication进行注释。

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

看看这个起始示例


然后,您可以通过这种方式在控制器类中注入值:

@RestController
public class HelloController {

    @Value("${test}")
    private String test;

    @RequestMapping("/test")
    String hello() {
        return test;
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM