最终属性 @Value 中的 Spring 属性注入 - Java

发布于 2024-11-30 16:20:16 字数 562 浏览 3 评论 0原文

一个关于 Spring 从属性文件注入最终属性的简单问题。

我有一个属性文件,我想在其中存储文件路径。通常,当我使用属性文件时,我使用如下内容设置类属性:

private @Value("#{someProps['prop.field']}") String someAttrib ;

然后在我的 spring.xml 中我会有类似的内容

<util:properties id="someProps"   
    location="classpath:/META-INF/properties/somePropFile.properties" />

:工作良好,简单,使代码美观整洁。但我不确定在尝试将属性值注入最终类属性时使用的最简洁的模式是什么?

显然类似:

private static final @Value("#{fileProps['dict.english']}") String DICT_PATH; 

行不通。还有别的办法吗?

A simple question on Spring injection from a properties file for a final attribute.

I have a properties file which I want to store a file path in. Generally when I use properties files I setup class attributes using something like this:

private @Value("#{someProps['prop.field']}") String someAttrib ;

Then in my spring.xml I would have something like:

<util:properties id="someProps"   
    location="classpath:/META-INF/properties/somePropFile.properties" />

This works well, is simple and makes code nice and neat. But I'm not sure what is the neatest pattern to use when trying to inject properties values into final class attributes?

Obviously something like:

private static final @Value("#{fileProps['dict.english']}") String DICT_PATH; 

will not work. Is there another way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最舍不得你 2024-12-07 16:20:16

将值注入最终字段的唯一方法是通过 构造函数注入。对于 Spring 来说,其他一切都将是一个可怕的黑客攻击。

The only way you can inject values into a final field is through Constructor Injection. Everything else would be an awful hack on Spring's side.

╭ゆ眷念 2024-12-07 16:20:16

如果您正在寻找示例,这里是一个:

public class Test {
    private final String value;

    public Test(@Value("${some.value}") String value){
        this.value=value;
        System.out.println(this.value);
    }
}

If you are looking for an example here is one:

public class Test {
    private final String value;

    public Test(@Value("${some.value}") String value){
        this.value=value;
        System.out.println(this.value);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文