@Slf4j
@Component
public class ApplicationContextHolder implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ApplicationContextHolder.applicationContext = applicationContext;
}
public static ApplicationContext getAplicationContext(){
return applicationContext;
}
}
@Slf4j
@Component
public class IDGenerator {
@Autowired
private ApplicationContext context;
private String getd(String type) {
try {
IG i = ApplicationContextHolder.getAplicationContext().getBean(IG.class);
} catch (Throwable e) {
} finally {
}
}
}
上述代码会报NPE错误,
解决NPE的方法一般有两种:
- 将 ApplicationContext 通过注入的方式
@Autowired
private ApplicationContext context;
- 在有依赖关系的bean上加上@DependsOn的注解
参考
https://www.cnblogs.com/zrtqsk/p/3735273.html
https://www.cnblogs.com/loong-hon/p/10917755.html