Whi*_*hip 72 spring code-injection
有了这堂课
@Component
public class Sample {
@Value("${my.name}")
public static String name;
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试Sample.name
,它总是'空'.所以我尝试了这个.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码有效.Sample.name
设置得当.这是好方法吗?如果没有,有什么更好的方法吗?怎么做?
Tom*_*icz 90
首先,public static
非final
领域是邪恶的.由于某种原因,Spring不允许注入此类字段.
你的解决方法是有效的,你甚至不需要getter/setter,private
字段就足够了.另一方面试试这个:
@Value("${my.name}")
public void setPrivateName(String privateName) {
Sample.name = privateName;
}
Run Code Online (Sandbox Code Playgroud)
(与@Autowired
/一起使用@Resource
).但是为了给你一些建设性的建议:使用private
field和getter而不是public static
field 创建第二个类.
归档时间: |
|
查看次数: |
104364 次 |
最近记录: |