@Component
public class Sample {
@Value("${my.name}")
public static String name;
}
如果我尝试Sample.name
,它始终为“ null”。所以我尝试了这个。
public class Sample {
public static String name;
@PostConstruct
public void init(){
name = privateName;
}
@Value("${my.name}")
private String privateName;
public String getPrivateName() {
return privateName;
}
public void setPrivateName(String privateName) {
this.privateName = privateName;
}
}
此代码有效。Sample.name设置正确。这是好方法吗?如果没有,还有什么更好的方法吗?以及如何做?
首先,public static
非final
领域是邪恶的。由于某种原因,Spring不允许注入此类字段。
你的解决方法是有效的,甚至不需要getter / setter,private
字段就足够了。另一方面,请尝试以下操作:
@Value("${my.name}")
public void setPrivateName(String privateName) {
Sample.name = privateName;
}
(与@Autowired/
一起使用@Resource
)。但是给你一些建设性的建议:用privatefield
和getter
代替public staticfield
创建第二个类。
问题内容: 我知道这看起来像是一个先前提出的问题,但是我在这里面临另一个问题。 我有一个只有静态方法的实用程序类。我不会,也不会从中获得实例。 现在我需要Spring用数据库属性Properties填充dataBaseAttr.Spring的配置是: 我已经在其他bean中做到了,但是此类(Utils)中的问题不是bean,如果我将其变成bean,则没有任何变化,但我仍然无法使用变量,因为该类不会
问题内容: 只是为了澄清我正在考虑的这个权利,在Java中,静态字段是整个类使用的变量/字段,还是可以用于引用该类的所有对象?非静态字段是由对象定义的变量吗?并且与对象1引用相同类的第二个对象可以具有与对象1的静态字段不同的值吗? 问题答案: 与实例变量不同,在创建该类的实例之前,可以访问该类中的静态字段或静态类变量。在运行时创建该类的实例时,将创建该类中的实例变量(非静态变量)。因此,直到创建该
我想澄清一下,在java中,静态字段是整个类使用的变量/字段,或者可以被引用该类的所有对象使用?非静态字段是由对象定义的变量?第二个对象引用与对象1相同的类,它可以对对象1的静态字段具有不同的值?
问题内容: 我正在学习Java。我编写了以下代码,但是当我尝试输入时,我在Arrayfunction()中收到此错误“无法对非静态输入字段进行静态引用”。为什么会这样,我该如何解决? } 问题答案: 扫描仪未定义为静态,因此在错误的范围内 在内部创建Scanner实例, 或使用以下方法创建扫描仪
问题内容: 这是指帖子 ..无法回复或评论任何这样创建的新帖子。为什么是我的 发出警告-应该以静态方式访问静态字段MyUnits.MILLSECONDS吗?谢谢。 问题答案: 因为当您访问静态字段时,您应该在类(或本例中为枚举)上执行此操作。如 不在实例中 编辑 要解决 为什么这样 的问题:在Java中,当您将声明为时,就是说它是类的成员,而不是对象(因此为什么只有一个)。因此,在对象上访问它是没
问题内容: 我正在开发具有参数的静态实用程序类的程序/游戏。 那么在某些特定情况下,例如在地图上打分数有限时,我需要覆盖此值。所以我做了以下事情: 预期的用法如下: 我实际上没有测试过此代码,因为IDE抱怨要通过实例调用静态字段,也要隐藏字段。我清楚地看到此代码很臭,所以有没有办法实现这一目标,还是我必须分别编写每个param类? PS:我知道我应该使默认类抽象并使用getters,我很好奇是否有