有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring@Value总是返回空值

我面临着一个与Spring(而不是Spring boot)相关的开发问题。 在类中,我必须检索在属性文件(application.properties)上定义的属性的值。 因此,我使用@Value注释(通常很容易使用),但在我的情况下它不起作用。 在我的课堂上,我有以下代码:

@Value("${value:'DefaultValue'}")
private String myValue;

通过导入:import org.springframework.beans.factory.annotation.Value;

我的属性文件包含:value=a value

但是,当我想测试我的应用程序时,我总是收到一个空值(也使用默认值)。 我试着在我的课堂上添加不同的注释,比如

@Component

你有什么建议吗?我很确定我错过了某个配置,但我不知道是什么

提前谢谢

提格鲁


共 (2) 个答案

  1. # 1 楼答案

    使用@Value注释的每个类都必须是spring管理的bean。您可以通过添加@Component注释来实现这一点,但请确保您已经在java配置中配置了组件扫描@ComponentScan(basePackages = "your.package"),这样spring就知道在哪里搜索组件

  2. # 2 楼答案

    最后,在大家的帮助下(特别感谢@M.Deinum),我解决了我的问题

    所以,首先要做的是,用Spring测试依赖项替换Junit依赖项(use)。 其次,我用以下几行代码更新了要用Spring执行的测试:

    @ExtendWith(SpringExtension.class)
    @ContextConfiguration(classes = {AppConfig.class})
    

    这足以检索@value字段的默认值。 要检索我必须添加的值

    @PropertySource("classpath:application.properties")
    

    在我的AppConfig类中