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).但是为了给你一些建设性的建议:使用privatefield和getter而不是public staticfield 创建第二个类.
| 归档时间: |
|
| 查看次数: |
104364 次 |
| 最近记录: |