gpt4 book ai didi

java - Spring bean 的静态方法。

转载 作者:行者123 更新时间:2023-12-02 10:48:12 35 4
gpt4 key购买 nike

public class QuestionStaticObject {
private static String staticprefix;
private static BeanFactory factory;

@Value("${account.prefix}")
public void setPrefix(String prefix) {
staticprefix = prefix;
}

public static String getPrefix() {
return staticprefix;
}

@Autowired
public void setFactory(BeanFactory f) {
factory = f;
}

public static BeanFactory getFactory() {
return factory;
}

public static String foo1(String id) {
String uuid = getPrefix() + id + "-" + System.currentTimeMillis() / 1000;
return uuid;
}

public static boolean foo2() throws GFMException {
OtherObject obj = getFactory().getBean(OtherObject.class);
return obj.foo1();
}
}

我的团队是在上面编写 Java 代码的团队。但我认为这段代码非常危险,因为如果 spring bean 的加载较晚,那么静态方法将引用 null 工厂或 null 'staticprefix'。

您对此有何看法?

最佳答案

即使我认为编写这样的静态内容是错误的,我也不认为这个特定的代码是危险的。

setPrefix 会在对象实例化后立即调用,因此不存在 NPE 风险。

该对象默认是单例。所以也不存在并发调用的风险。但这是糟糕的代码设计。

关于java - Spring bean 的静态方法。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52381263/

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