Заполнить карту о создании бобов весной - PullRequest
0 голосов
/ 23 марта 2020

У меня есть класс:

@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 в качестве ключа и ссылку на сервис в качестве значения. Как правильно заполнять карту вместе с услугами?

...