Hos*_*ein 8 java spring static-methods dependency-injection
这个问题看起来有点奇怪.假设我有一个服务,我想在具有一些静态方法的Utility类中使用.该服务是一个Spring bean,所以我自然会使用一个setter和(@Autowired)将它注入我的实用程序类.正如Spring的文档中提到的,所有bean在bean上下文中都是静态的.因此,当您想要在类中注入bean时,您不必使用"static"修饰符.见下文:
public class JustAClass{
private Service service;
public void aMethod(){
service.doSomething(....);
}
@Autowired
public void setService(Service service){
this.service = 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是静态的,但我不得不将静态置于其定义之后.这对我来说有点违反直觉.这是错的吗?还是更好的方式?谢谢
yna*_*ame 14
您无法自动装配静态字段.
但你可以做一点解决方法:
@Component
public class JustAClass{
private static Service service;
@Autowired
private Service tmpService;
@PostConstruct
public void init() {
service = tmpService;
}
}
Run Code Online (Sandbox Code Playgroud)
注意,您必须将此类声明为"Component"以注入tmpService
| 归档时间: |
|
| 查看次数: |
14873 次 |
| 最近记录: |