package de.gedoplan.seminar.sbt.di.exercise.service; import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.web.context.annotation.RequestScope; import jakarta.annotation.PostConstruct; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RequestScope @Configuration public class CocktailsProducer { @Autowired private CocktailService cocktailService; private List cocktailsAlcoholic; private List cocktailsNonAlcoholic; @PostConstruct private void init() { Map> cocktails = cocktailService.findAll().stream() .collect(Collectors.groupingBy(Cocktail::isAlcoholic)); cocktailsAlcoholic = cocktails.getOrDefault(true,List.of()); cocktailsNonAlcoholic = cocktails.getOrDefault(false,List.of()); } @Primary @RequestScope @Bean protected List getCocktails() { return cocktailService.findAll(); } @Qualifier("alcoholic") @RequestScope @Bean protected List getCocktailsAlcoholic() { return cocktailsAlcoholic; } @Qualifier("non-alcoholic") @RequestScope @Bean protected List getCocktailsNonAlcoholic() { return cocktailsNonAlcoholic; } }