java - 如何指定抽象类的具体实现版本在 Spring 中 Autowiring ?

标签 java spring dependency-injection abstract-class autowired

具有以下类结构:

public abstract class A {
    String someProperty = "property"

    public abstract void doSomething();
}

@Service
public class Aa extends A {

    @Override
    public abstract void doSomething() {
        System.out.println("I did");
    }
}

@Service
public class Ab extends A {

    @Override
    public abstract void doSomething() {
        System.out.println("I did something else");
    }
}

我需要一种方法根据 中的属性告诉 Spring 在我的 Foo 服务中哪个 A 具体类 Autowire >属性文件。

@Service
public class Foo {

    @Autowire
    private A assignMeAConcreteClass;
}

在我的 properties 文件中我有这个:

should-Aa-be-used: {true, false}

最佳答案

删除@Service注解,改写@Bean-annotated method在读取属性的配置类中,并返回适当的 A 实例。

关于java - 如何指定抽象类的具体实现版本在 Spring 中 Autowiring ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53709734/

相关文章:

java - 在java中,我期望返回必须捕获的值的方法调用不会抛出编译错误。为什么?

JAVA 编码/解码 Base 64 并将其呈现在浏览器上或将其保存到文件

performance - Symfony2 依赖注入(inject) : performances impact

java - Spring Framework HttpComponentsClientHttpRequestFactory 线程安全吗?

java - Spring集成疑问: CRUD operations and sharing events between components

dependency-injection - 使用 Entity Framework 4.1 和 DDD 访问代码生成的 DbContext 上的存储过程

wcf - 服务契约(Contract) WCF 中的 DI

java - 在相对布局中,如何将运行时 TextView 显示在另一个 TextView 下方?

java - 计算相似性度量

java - 如何将更多参数传递给 spring validate 方法