首页 > 解决方案 > 如何在 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);
    }
}

如何解决这个问题呢?

标签: spring-bootjavabeansapplicationcontext

解决方案


推荐阅读