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