spring-boot - 如何访问抽象类中的bean
问题描述
我有两个服务都实现了一个抽象基类
abstract class BaseService {}
@Service
public class ServiceA extends BaseService {}
@Service
public class ServiceB extends BaseService {}
与这些类分开,我有一个工厂 bean,它使用实例化 ServiceA 或 ServiceB 的 ServiceLocatorFactoryBean。
我需要在上面的 BaseService 中使用一个静态方法,该方法还需要实例化 ServiceA 或 ServiceB。所以我需要将 Factory bean 注入到我的抽象类中。做这个的最好方式是什么?
我认为这是不可能的,我可能需要一个单独的实用程序类,它是一个 @Component,然后做我想做的事。
这是工厂bean的定义方式
public interface Factory {
BaseService getService();
}
@Configuration
public class ProviderConfig {
@Bean
public ServiceLocatorFactoryBean createFactoryBean() {
final ServiceLocatorFactoryBean factory = new ServiceLocatorFactoryBean();
factory.setServiceLocatorInterface(Factory.class);
return factory;
}
@Bean(name = "A")
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public BaseService ServiceA() {
return new ServiceA();
}
@Bean(name = "B")
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public BaseService ServiceB() {
return new ServiceB();
}
}
解决方案
推荐阅读
- stm32 - STM32F405 SPI Transmit using DMA not working
- python - SWIG、Python 和带有内联指令的接口文件
- python - 尝试使用 sheet_name=None 为文档中的每个工作表运行 python pandas 脚本但不工作
- c# - 在 C# 中人为地创建连接超时错误?
- postgresql - 是否可以使用集群外的 Dbeaver 或 SQLDeveloper 等客户端连接在 Kubernetes 集群中运行的 pgsql?
- javascript - change selected object value in an array of object
- data-warehouse - From operational data store to warehouse
- function - 如何在 julia 的模块中获取函数列表
- flutter - Flutter-注册后的Firebase电话验证
- r - 如何根据来自另一个数据框的值选择数据框列?