我已查看此链接How to make spring inject value into a static field
但是,我的要求略有不同。我知道这是针对Spring的IoC,但我需要做这个解决方法。
package foo.package
@Controller
public class SomeController{
public static int var = -1;
private String someStringField = null;
// n- number of non-static fields
/**
* Constructor
*/
public SomeController(){
someStringField = "some Value" ; // This is just for example.
}
}
现在,我需要添加一个静态块,并使用Spring的上下文xml中的某个值设置静态字段var
。
根据链接中给出的代码段,
我可以用clinit
代替方法名称吗?
提前致谢。
答案 0 :(得分:1)
您还可以添加将初始化var。
的自动装配的setterpackage foo.package
@Controller
public class SomeController{
public static int var = -1;
private String someStringField = null;
// n- number of non-static fields
/**
* Constructor
*/
public SomeController(){
someStringField = "some Value" ; // This is just for example.
}
@Value("${your.property}")
public void setVar(Integer var) {
SomeController.var = var;
}
}
答案 1 :(得分:0)
@Vladimir:
我想我找到了一个解决方法,虽然它不优雅。它是在上下文xml中完成的。
我发现问题的根本原因是<context:component-scan>
我在组件扫描后调用静态方法,即我正在做
<bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
在<component scan>
之后。所以,我只是改变了顺序,而且设置正确。
我想,春天的上下文是扫描注释并实例化它们。撤销订单就行了。
非常感谢您的支持。 : - )