@Autowired 可以注入static 类吗 静态方法使用 注入类怎样编码
时间: 2023-07-28 10:27:24 浏览: 123
详解Spring @Autowired 注入小技巧
@Autowired注解只能用于实例字段、构造函数和普通方法,不能用于静态方法和静态字段。因为静态方法和静态字段是在类加载时就被初始化的,而@Autowired注解是在对象实例化时才进行依赖注入的。
如果你需要在静态方法中使用注入的类,可以考虑使用单例模式来获取该类的实例,或者将该类实例化后保存在静态字段中,供静态方法使用。例如:
```java
@Component
public class MyService {
// ...
}
public class MyStaticClass {
private static MyService myService;
@Autowired
public void setMyService(MyService myService) {
MyStaticClass.myService = myService;
}
public static void myStaticMethod() {
// 使用 MyStaticClass.myService
}
}
```
在调用静态方法前,需要先确保MyStaticClass.myService已经被注入了实例。可以在应用启动时,通过Spring的ApplicationContext获取MyService实例并注入到MyStaticClass中。
阅读全文