1. Forretningsscenarier
Der findes statiske metoder i spring framework-applikationer, som skal stole på klasser administreret af containere, som denne:
Dette vil helt sikkert rapportere java.lang.NullPointerException: null undtagelse.
2. Principanalyse
Statiske variable og klassevariabler er ikke egenskaber ved objekter, men egenskaber ved en klasse, så statiske metoder tilhører klasser, almindelige metoder tilhører entitetsobjekter (dvs. nye objekter), og spring injection instansierer objekter i beholdere, så statiske metoder kan ikke anvendes.
Brugen af statiske variable og klassevariable udvider anvendelsesområdet for statiske metoder. Statiske metoder anbefales ikke om foråret, og hovedformålet med afhængighedsinjektion er at lade containere generere instanser af et objekt og derefter bruge dem gennem hele deres levetid, samtidig med at testningen bliver lettere.
Når du bruger den statiske metode, behøver du ikke længere generere instanser af denne klasse, hvilket gør testning sværere, og du kan ikke stole på injektion til at generere flere instanser med forskellige afhængigheder for en given klasse, som implicit deles og er en global tilstand, hvilket heller ikke anbefales af Spring.
3. Løsning
1. Tilføj @Autowire til konstruktionsmetoden
2. Annoter med @PostConstruct
|