spring-boot - 如何在 Spring Boot 应用程序中注册我的 ApplicationContextProvider 服务?
问题描述
我需要动态创建一个 Bean 对象。
这是我的 BeanUtil
@Service
public class ApplicationContextProvider implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
public static <T> T getBean(Class<T> beanClass) {
return context.getBean(beanClass);
}
}
不幸的是,上下文为空如何在Bean创建过程之前调用setApplicationContext函数
用法:
@Service
public class MainService {
private final Logger logger = LoggerFactory.getLogger(DataConsumer.class);
public final static TheWorker worker = new TheWorker(ApplicationContextProvider .getBean(TheService.class));
...
我的应用程序启动:
@SpringBootApplication
@Configuration
@ComponentScan({"path.to.endpoints", "path.to.services", "path.to.workers", "path.to.utils"})
public class TheApplication {
public static void main(String[] args) {
SpringApplication.run(TheApplication.class, args);
}
}
如何解决这个问题呢?
解决方案
推荐阅读
- node.js - passportJS:req.user 返回未定义
- java - 如何在不依赖于位置的 recyclerview 上设置 OnClickListener
- python - 单独的 python 环境,其中一个 python 版本预安装在特定软件中
- .htaccess - 友好链接不适用于获取数组
- python - 如何以编程方式从退回的电子邮件列表中删除电子邮件?
- python - 如何从 Windows 命令提示符启用“空闲”命令
- c# - ZipArchive Entry.FullName 损坏
- visual-c++ - 构建 MicroSIP 3.19.18:未定义“PJRPID_ACTIVITY_ON_THE_PHONE”
- c# - 类序列化期间出错:类型未标记为可序列化
- php - 将日期格式更改为完全相同