1. Obchodní scénáře
Existují statické metody ve springframeworkových aplikacích, které se musí spoléhat na třídy spravované kontejnery, například tato:
To určitě nahlásí java.lang.NullPointerException: null exception.
2. Analýza principů
Statické proměnné a třídní proměnné nejsou vlastnosti objektů, ale vlastnosti třídy, takže statické metody patří do tříd, běžné metody do entity objektů (tj. nových objektů) a spring injection instancuje objekty v kontejnerech, takže statické metody nelze použít.
Použití statických proměnných a třídních proměnných rozšiřuje rozsah použití statických metod. Statické metody se na jaře nedoporučují a hlavním účelem injekce závislostí je umožnit kontejnerům generovat instance objektu a používat je po celou dobu jejich života, přičemž zároveň usnadňuje testování.
Jakmile použijete statickou metodu, už není potřeba generovat instance této třídy, což testování ztěžuje, a nemůžete se spoléhat na injekci, která generuje více instancí s různými závislostmi pro danou třídu, která je implicitně sdílená a je globálním stavem, což Spring také nedoporučuje.
3. Řešení
1. Přidat @Autowire k konstrukční metodě
2. Anotujte @PostConstruct
|