Kort introduktion
Java EE5 introducerer to annotationer, @PostConstruct og @PreDestroy, som virker på servlet-livscyklussen og muliggør brugerdefinerede operationer, før bønnen initialiseres og før den ødelægges. Denne artikel forklarer hovedsageligt @PostConstruct.
API-brugsinstruktioner
Følgende er instruktionerne til brug af @PostConstruct API'en:
PostConstruct-annoteringer bruges på metoder, der skal udføres efter afhængighedsinjektionen er fuldført for at kunne udføre en initialisering. Denne metode skal kaldes, før klassen indsættes i tjenesten. Alle klasser, der understøtter afhængighedsinjektion, skal understøtte denne annotation. Selv hvis klassen ikke anmoder om nogen ressourceinjektion, skal metoden annoteret med PostConstruct kaldes. Der er kun én måde at annotere med denne annotation på. Metoden til anvendelse af PostConstruct-annoteringer skal overholde alle følgende kriterier: metoden må ikke have nogen parametre, medmindre det er tilfældet med en EJB-interceptor, som defineret af EJB-specifikationen, i hvilket tilfælde den vil komme med et InvocationContext-objekt; Returtypen af metoden skal være ugyldig; Metoden må ikke kaste en tjekket undtagelse; Metoden til at anvende PostConstruct kan være offentlig, beskyttet, pakke-privat eller privat; Metoden kan ikke være statisk undtagen for applikationsklienten; Metoden kan være endelig; Hvis metoden kaster en ukontrolleret undtagelse, må klassen ikke placeres i tjenesten, medmindre det er en EJB, der kan håndtere undtagelsen og gendanne den. Det kan opsummeres således:
- Der er kun én måde at annotere med denne annotation;
- Den annoterede metode må ikke have nogen parametre;
- Den annoterede metode returnerer værdien void;
- Den annoterede metode må ikke kaste en tjekket undtagelse;
- Den annoterede metode skal være en ikke-statisk metode;
- Denne metode udføres kun én gang;
Servlet-eksekveringsflowdiagram
Tilføjelsen af to annotationer vil kun tillade servleten at udføre flowchartet:
Under instansieringsprocessen af en bestemt bønne kaldes den annoterede metode @PostConstruct efter konstruktmetoden og før init-metoden.
Eksempel
Eksekverbare metoder skrevet baseret på Spring boot kan findes på github:https://github.com/HappySecondBrother/example
UserService-metoden (leverer cachede data):
BusinessService-metoden, der kalder UserService ved @PostConstruct:
Udførelsesresultater:
Projektanvendelse
I project@PostConstruct er hovedapplikationsscenariet at indlæse nogle cache-data, når servleten initialiseres.
Noter:
Brugen af denne annotation påvirker starttidspunktet for gudstjenesten. Serveren scanner alle filer i WEB-INF/classes og alle jar-pakker under WEB-INF/lib ved opstart.
|