1. Obchodné scenáre
Existujú statické metódy v aplikáciách Spring Framework, ktoré sa musia spoliehať na triedy spravované kontajnermi, ako napríklad táto:
Toto určite zobrazí java.lang.NullPointerException: null exception.
2. Analýza princípov
Statické premenné a triedne premenné nie sú vlastnosťami objektov, ale vlastnosťami triedy, takže statické metódy patria do tried, bežné metódy do entity objektov (t. j. nových objektov) a spring injection inštancuje objekty v kontajneroch, takže statické metódy nie je možné použiť.
Použitie statických premenných a triednych premenných rozširuje rozsah použitia statických metód. Statické metódy sa na jari neodporúčajú a hlavným účelom dependency injection je umožniť kontajnerom generovať inštancie objektu a potom ich používať počas celej životnosti, pričom zároveň uľahčí testovanie.
Keď použijete statickú metódu, už nemusíte generovať inštancie tejto triedy, čo sťažuje testovanie, a nemôžete sa spoliehať na injekciu na generovanie viacerých inštancií s rôznymi závislosťami pre danú triedu, ktorá je implicitne zdieľaná a je globálnym stavom, čo Spring tiež neodporúča.
3. Riešenie
1. Pridať @Autowire k metóde konštrukcie
2. Anotujte @PostConstruct
|