springboot 静态类中使用注入
时间: 2023-07-05 11:32:25 浏览: 122
在Spring Boot中,静态类中使用注入需要借助Spring提供的工具类`ApplicationContextAware`。具体步骤如下:
1. 定义一个静态类,实现`ApplicationContextAware`接口,重写`setApplicationContext()`方法。
```java
public class StaticClass implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
StaticClass.applicationContext = applicationContext;
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
}
```
2. 在静态类中定义一个静态成员变量`applicationContext`,用于保存ApplicationContext对象。
3. 在`setApplicationContext()`方法中,将ApplicationContext对象保存到静态成员变量`applicationContext`中。
4. 在静态类中定义一个静态方法`getBean(String name)`,用于获取Bean实例。
5. 在静态方法中使用静态成员变量`applicationContext`获取Bean实例。
例如,我们要在静态类中使用`UserService`进行业务操作,可以使用如下代码:
```java
public class StaticClass implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
StaticClass.applicationContext = applicationContext;
}
public static UserService getUserService() {
return applicationContext.getBean(UserService.class);
}
}
```
这样,我们就可以在静态类中使用注入的Bean实例了。注意,使用静态类中的注入需要保证Spring容器已经启动,否则可能会出现空指针异常。
阅读全文