我有两个服务都实现了一个抽象基类
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();
}
}