【发布时间】:2019-07-30 23:07:13
【问题描述】:
我想在 ApplicationContext 加载后将 @Component 类添加到 spring 容器中。但我不能使用 BeanFactory。因为我使用的是 BeanFactory,所以我必须为这些类定义 bean。但我无法定义它(如果我不使用反射)。因为这些类会在运行时由 ClassLoader 加载。
例如
@Component
public class Service {
private final CustomerService customerService;
private final OrderService orderService;
private final PaymentService paymentService;
@Autowired
public Service(CustomerService customerService, OrderService orderService, PaymentService paymentService) {
this.customerService = customerService;
this.orderService = orderService;
this.paymentService = paymentService;
}
}
在此示例中,Spring 在应用程序调用时为此类创建 bean。不需要用@Bean 定义bean。但我想要的是编译 spring 项目并从另一个项目加载这些类并添加到 Spring ApplicationContext。所以我可以自动装配这些。否则我必须在运行时创建带有反射的bean。如果我使用反射,我会递归调用所有依赖类。
有没有办法在运行时不使用反射创建bean。
【问题讨论】:
-
请将您的解决方案放在答案中并接受它,而不是将其编辑到您的问题中。
标签: java spring spring-boot