1. Zakelijke scenario's
Er zijn statische methoden in Spring Framework-applicaties die moeten vertrouwen op klassen die door containers worden beheerd, zoals deze:
Dit zal zeker java.lang rapporteren. NullPointerException: null exception.
2. Principiële analyse
Statische variabelen en klassevariabelen zijn geen eigenschappen van objecten, maar eigenschappen van een klasse, dus statische methoden behoren tot klassen, gewone methoden tot entiteitsobjecten (d.w.z. nieuwe objecten), en spring injection instantieert objecten in containers, waardoor statische methoden niet kunnen worden gebruikt.
Het gebruik van statische variabelen en klassevariabelen vergroot het toepassingsgebied van statische methoden. Statische methoden worden in het voorjaar niet aanbevolen, en het belangrijkste doel van dependency injection is om containers toe te staan instanties van een object te genereren en deze vervolgens gedurende hun hele levensduur te gebruiken, terwijl het testen ook eenvoudiger wordt.
Zodra je de statische methode gebruikt, hoef je geen instanties van deze klasse meer te genereren, wat testen moeilijker maakt, en je kunt niet vertrouwen op injectie om meerdere instanties met verschillende afhankelijkheden voor een bepaalde klasse te genereren, wat impliciet gedeeld is en een globale toestand is, wat ook niet wordt aanbevolen door Spring.
3. Oplossing
1. Voeg @Autowire toe aan de constructiemethode
2. Annoteer met @PostConstruct
|