【发布时间】:2013-11-06 07:11:50
【问题描述】:
这个问题可能看起来有点奇怪。假设我有一个要在具有一些静态方法的实用程序类中使用的服务。 Service 是一个 Spring bean,因此我自然会使用 setter 和 (@Autowired) 将其注入到我的实用程序类中。 正如 Spring 的文档中提到的,所有 bean 在 bean 上下文中都是静态的。因此,当您想在类中注入 bean 时,您不必使用“静态”修饰符。见下文:
public class JustAClass{
private Service service;
public void aMethod(){
service.doSomething(....);
}
@Autowired
public void setService(Service service){
this.service = service;
}
}
现在回到我首先提到的内容(在静态方法中使用服务):
public class JustAClass{
private static Service service;
public static void aMethod(){
service.doSomething(....);
}
@Autowired
public void setService(Service service){
this.service = service;
}
}
虽然服务是静态的,但我不得不将静态放在它的定义后面。这对我来说有点违反直觉。这是错的吗?还是更好的方法? 谢谢
【问题讨论】:
标签: java spring dependency-injection static-methods