首页 > 解决方案 > 如何访问抽象类中的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();
    }
}

标签: spring-bootdependency-injection

解决方案


推荐阅读