Spring 的 @Value 注解总是为 null

问题描述 投票:0回答:1

我是Java和Spring框架的初学者,我正在学习如何在没有Spring Boot的情况下配置应用程序。在我的@Configuration类中,我有这些代码:

@PropertySource("classpath:/application.properties")
@Configuration
@ComponentScan("org.example")
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
 ...
   @Value("${app.person.url}")
    private String propertyValue;
...
}

在 resources/application.properties 中,我写了

app.person.url = "jdbc:h2:\\test\\h2test"
。我写了一个方法来读取这个值:

public record Person(String url) {
}

    @Bean
    public Person getFromProperty() {
        return new Person(propertyValue);
    }

在我的控制器中,我编写了一个映射到

localhost:8080/data
的方法来获取 Person Bean:

    @GetMapping("/data")
    public Person data() {
        return context.getBean(Person.class);
    }

但是,当我访问

localhost:8080/data
时,我总是得到一个空网址的人:

{
    "url": null
}

为什么会发生这种情况?我能做些什么来解决这个问题?我已将代码上传到github:https://github.com/dzkd2019/SpringMvcDemo/tree/master

我尝试添加类型为

PropertySourcesPlaceholderConfigurer
的静态 bean,但这不起作用。

java spring spring-mvc
1个回答
0
投票

您需要将

/
替换为
PropertySource

从这里

@PropertySource("classpath:/application.properties")

@PropertySource("classpath:application.properties")
© www.soinside.com 2019 - 2024. All rights reserved.