这个问题可能看起来有点奇怪。假设我有一个要在具有一些静态方法的实用程序类中使用的服务。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;
}
}
虽然 Service 是静态的,但我不得不将静态放在它的定义后面。这对我来说有点违反直觉。这是错的吗?还是更好的方法?谢谢