1. Scenariusze biznesowe
W aplikacjach spring frameworków istnieją statyczne metody, które muszą polegać na klasach zarządzanych przez kontenery, takie jak ta:
To na pewno zgłosi java.lang.NullPointerException: null exception.
2. Analiza zasad
Zmienne statyczne i klasy nie są właściwościami obiektów, lecz właściwościami klasy, więc metody statyczne należą do klas, metody zwykłe do obiektów encji (czyli nowych obiektów), a wstrzykiwanie sprężynowe instancjonuje obiekty w kontenerach, więc metody statyczne nie mogą być używane.
Użycie zmiennych statycznych i klasowych rozszerza zakres stosowania metod statycznych. Metody statyczne nie są zalecane na wiosnę, a głównym celem wstrzykiwania zależności jest umożliwienie kontenerom generowania instancji obiektu i ich używania przez cały czas ich życia, a także ułatwienie testowania.
Gdy już użyjesz metody statycznej, nie musisz już generować instancji tej klasy, co utrudnia testowanie, i nie możesz polegać na wstrzyknięciu, by wygenerować wiele instancji z różnymi zależnościami dla danej klasy, która jest współdzielona i stanowi stan globalny, co również nie jest zalecane przez Spring.
3. Rozwiązanie
1. Dodaj @Autowire do metody konstrukcyjnej
2. Przypisuj @PostConstruct
|