1. Forretningsscenarier
Det finnes statiske metoder i Spring Framework-applikasjoner som må stole på klasser administrert av containere, slik som dette:
Dette vil definitivt rapportere java.lang.NullPointerException: null unntak.
2. Prinsippanalyse
Statiske variabler og klassevariabler er ikke egenskaper ved objekter, men egenskaper ved en klasse, så statiske metoder tilhører klasser, vanlige metoder tilhører entitetsobjekter (dvs. nye objekter), og spring injection instansierer objekter i beholdere, så statiske metoder kan ikke brukes.
Bruken av statiske variabler og klassevariabler utvider bruksområdet for statiske metoder. Statiske metoder anbefales ikke om våren, og hovedformålet med avhengighetsinjeksjon er å la beholdere generere instanser av et objekt og deretter bruke dem gjennom hele levetiden, samtidig som testingen blir enklere.
Når du bruker den statiske metoden, trenger du ikke lenger å generere instanser av denne klassen, noe som gjør testing vanskeligere, og du kan ikke stole på injeksjon for å generere flere instanser med forskjellige avhengigheter for en gitt klasse, som implisitt deles og er en global tilstand, noe som heller ikke anbefales av Spring.
3. Løsning
1. Legg til @Autowire i konstruksjonsmetoden
2. Annoter med @PostConstruct
|