gpt4 book ai didi

java - 使用 spring 注入(inject)分配私有(private)静态最终字段成员

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:55 24 4
gpt4 key购买 nike

这样的任务有可能实现吗? article这里处理私有(private)静态字段成员,但在这种情况下没有帮助,因为无法分配最终成员。

使用private static final作为成员限定符的理由:

  • 数据成员是一个 ServiceClient,因此将其附加到类型是有意义的,因为它不依赖于实例。它也是线程安全的,因此它将提高性能,因为我不会为每个实例初始化客户端。
  • 服务客户端本身是一个 bean,具有单例范围。因此实际上只有一个实例。由于总会有一个实例,因此没有必要允许重新分配。
  • 由于该客户端仅由此类的方法使用,因此它是私有(private)的。

我不太确定这是否是反模式,但如果是,那么我的理由是否有资格使用它?如果是的话,那该怎么办呢。如果不是,那么请提出替代方案(我仍然有兴趣知道如何实现这一点,只是出于知识目的)。

最佳答案

你想做的事情根本不可能。

最根本的原因是Java用实际值替换了代码中出现的static final“变量”(因为它在编译时当然是已知的)。查看this所以回答更多细节。

即使你不使用final,Spring仍然不允许你直接向static变量注入(inject)值。您必须使用如下 setter :

@Value("${my.name}")
public void setPrivateName(String privateName) {
Sample.name = privateName;
}

查看this所以回答更多。

关于java - 使用 spring 注入(inject)分配私有(private)静态最终字段成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25267954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com