在春季的Bean创建中填充Map <Enum,ObjectReference>

时间:2020-03-23 14:53:45

标签: java spring collections javabeans

我有课:

@Component
@NoArgsConstructor
public class ServiceFactory {
    private CustomerService customerService;
    private ClientService clientService;

    private Map<OrderType, SettlementService> settlementServiceMap;

    public ServiceFactory(CustomerService customerService, ClientService clientService) {
        this.customerService = customerService;
        this.clientService = clientService;
        this.settlementServiceMap = new EnumMap<OrderType, SettlementService>(OrderType.class){{
            put(CUSTOMER_CREDIT_ORDER, customerService);
            put(CLIENT_CREDIT_ORDER, clientService);
            put(CLIENT_DEBIT_ORDER, clientService);
        }};
    }

    public SettlementService provideService(OrderType orderType){
        Optional<SettlementService> settlementService = Optional.ofNullable(settlementServiceMap.get(orderType));
        if (!settlementService.isPresent()){
            throw new ApplicationException("Wrong order type");
        }

        return settlementService.get();
    }
}

由于服务尚未初始化,我得到了NullPointerException。映射包含orderType作为键,并引用service作为值。用服务填充地图的正确方法是什么?

0 个答案:

没有答案
相关问题