【发布时间】:2019-02-01 04:25:50
【问题描述】:
我有一个 Spring Boot 应用程序,它有一个工厂类,它根据字符串确定要实例化的策略。 策略工厂类有 3 个构造函数。每个策略一个。 这是该类的通用版本:
public class StrategyFactory {
private Strategy1 strategy1;
private Strategy2 strategy2;
private Strategy3 strategy3;
@Autowired
public StrategyFactory(Strategy1 strategy1) {
this.strategy1 = strategy1;
}
public StrategyFactory(Strategy2 strategy2) {
this.strategy2 = strategy2;
}
public StrategyFactory(Strategy3 strategy3) {
this.strategy3 = strategy3;
}
public GenericStrategy getTrailerStrategy(String strategy) {
LOGGER.info("Retrieving Strategy Class for {}", strategy);
if (strategy.equals("CLOSE_DETAIL")) {
return strategy1;
}
else if(strategy.equals("LOAD_TRAILER")) {
return strategy2;
}
else if(strategy.equals("CLOSE_SUMMARY")) {
return strategy3;
}
else {
throw new InvalidStrategyTypeException("Invalid Strategy Type");
}
}
}
当尝试实例化其中一种策略时,只会实例化 @Autowired 策略。如果我尝试实例化其他的,它会返回 null。
如何让其他策略被实例化?
【问题讨论】:
标签: java spring-boot