Wpis z mikrobloga

Chcę mieć generyczną klasę ServiceConfigurationProvider z adnotacją @Configuration i metodę get() z adnotacją @Bean, która zwróci po prostu obiekt podanej klasy. Problem jest taki, że gdy próbuję ją wstrzyknąć do innej klasy np. private final ServiceConfigurationProvider provider, to pojawia się błąd, że nie może znaleźć takiego beana.

Ta klasa wygląda tak:

@Configuration
public class ServiceConfigurationProvider {

@Bean
public T get() {

return (T) new Object();
}
}

#java #naukaprogramowania #programowanie
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

konto usunięte via Wykop Mobilny (Android)
  • 0
@Edelner: Jesteś pewien że (T) new Object()? ( ͡° ͜ʖ ͡°) Zwykle w takim wypadku musisz podać metodę fabryczną albo obiekt Class. Spring potrafi wstrzyknąć np. List (czyli generyczny kontener), jeśli masz metody które zwracają bean typu XYZ.
  • Odpowiedz
@LazyInitializationException: Tak, ale wtedy jakaś klasa korzystająca z tej klasy konfiguracyjnej może wywołać też inne serwisy oprócz tego jednego, który wcześniej wywoływała. Dlatego potrzebuję klasy z metodą, która zwróci mi w jeden określny obiekt serwisu w zależności od podanego parametru.
  • Odpowiedz
@LazyInitializationException:
Popatrz. Mam klasę np. jakiś controller. Do tej klasy wstrzykuję ServiceConfigurationProvider. W jakieś metodzie controllera pobieram serwis z ServiceConfigurationProvidera za pomocą metody get i używam jakieś metody z tego serwisu. I teraz chodzi mi o to, żeby sparamteryzować tego ServiceConfigurationProvidera.
  • Odpowiedz