- 实现ApplicationContextAware接口:
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class MyBean implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext context) {
applicationContext = context;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
}
- 注入ApplicationContext:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final ApplicationContext applicationContext;
@Autowired
public MyBean(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
}
- 使用静态方法:
如果无法在类中注入ApplicationContext,可以尝试使用Spring提供的静态方法 org.springframework.context.ApplicationContextAware#getApplicationContext() 来获取ApplicationContext。
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class MyBean {
public void someMethod() {
ApplicationContext applicationContext = ApplicationContextAware.getApplicationContext();
}
}