Весенний впрыск для бобов с универсальным подстановочным знаком - PullRequest
0 голосов
/ 29 октября 2019

У меня есть следующее:

public abstract class ReportGenerationStrategy<T extends ReportParameter> {

    public abstract void generate(T reportParameter) throws IOException;
}

Подклассы:

@Component
@AllArgsConstructor
public class DeferredRevenueReportGenerationStrategy extends ReportGenerationStrategy<DeferredRevenueReportParameter> {


}

@Component
@AllArgsConstructor
public class OffBalanceExposureReportGenerationStrategy  extends ReportGenerationStrategy<OffBalanceExposureReportParameter> {


}

Я создаю карту с подклассами:

@Bean
    public Map<ReportType, ReportGenerationStrategy<? extends ReportParameter>> generationStrategies(
            @Qualifier("deferredRevenueReportGenerationStrategy") final ReportGenerationStrategy<? extends ReportParameter> deferredRevenue,
            @Qualifier("offBalanceExposureReportGenerationStrategy") final ReportGenerationStrategy<? extends ReportParameter> offBalanceExposure
    )
    {
        return ImmutableMap.of(
                ReportType.DEFERRED_REVENUE, deferredRevenue,
                ReportType.OFF_BALANCE_EXPOSURE, offBalanceExposure
        );
    }

И пытаюсьвведите карту следующим образом:

@AllArgsConstructor
@Slf4j
public class ReportApplicationServices {


    private final Map<ReportType, ReportGenerationStrategy<ReportParameter>> generationStrategies; //Empty map injected


}

Но я получаю пустую карту на поле ...

Почему это происходит?

1 Ответ

0 голосов
/ 29 октября 2019

Я полагаю, что вы пропустили использование аннотации @Autowire на объявленном вами private final Map.

Надеюсь, это поможет и решит проблему.

...