Krótkie wprowadzenie
Java EE5 wprowadza dwie adnotacje, @PostConstruct i @PreDestroy, które działają na cykl życia servleta, umożliwiając niestandardowe operacje przed inicjalizacją ziarenka i przed jego zniszczeniem. Ten artykuł głównie wyjaśnia @PostConstruct.
Instrukcje dotyczące korzystania z API
Poniżej znajdują się instrukcje dotyczące korzystania z API @PostConstruct:
Adnotacje PostConstruct są stosowane w metodach, które muszą zostać wykonane po zakończeniu wstrzyknięcia zależności, aby wykonać jakąkolwiek inicjalizację. Metoda ta musi być wywołana przed wprowadzeniem klasy do usługi. Wszystkie klasy wspierające wstrzykiwanie zależności muszą wspierać tę adnotację. Nawet jeśli klasa nie wymaga żadnej iniekcji zasobów, metoda oznaczona PostConstruct musi zostać wywołana. Istnieje tylko jeden sposób na adnotację za pomocą tej adnotacji. Metoda stosowania adnotacji PostConstruct musi spełniać wszystkie następujące kryteria: metoda nie może mieć żadnych parametrów, chyba że w przypadku interceptora EJB, zgodnie ze specyfikacją EJB, wtedy będzie miała obiekt InvocationContext; Typ zwrotu metody musi być nieważny; Metoda nie może wyrzucać wyjątku z zaznaczeniem; Metoda stosowania PostConstruct może być publiczna, chroniona, pakietowa prywatna lub prywatna; Metoda nie może być statyczna, z wyjątkiem klienta aplikacji; Metoda może być ostateczna; Jeśli metoda wyrzuca niezaznaczony wyjątek, klasa nie może być umieszczona w usługi, chyba że jest to EJB, który potrafi obsłużyć wyjątek i go odzyskać. Można to podsumować następująco:
- Istnieje tylko jeden sposób adnotacji za pomocą tej adnotacji;
- Metoda adnotowana nie może mieć żadnych parametrów;
- Metoda adnotowana zwraca wartość void;
- Metoda adnotowana nie może wyrzucać wyjątku sprawdzanego;
- Metoda adnotowana musi być metodą niestatyczną;
- Metoda ta jest wykonywana tylko raz;
Schemat przepływu wykonawczego Servletów
Dodanie dwóch adnotacji pozwoli serwetowi wykonać tylko schemat blokowy:
Podczas procesu instancji konkretnego ziarna metoda adnotowana @PostConstruct jest wywoływana po metodzie construct, a przed metodą init.
Przykład
Metody wykonywalne napisane na bazie Spring Boot można znaleźć na githubie:https://github.com/HappySecondBrother/example
Metoda UserService (dostarcza dane w pamięci podręcznej):
Metoda BusinessService, wywoływanie UserService przez @PostConstruct:
Wyniki realizacji:
Aplikacja projektowa
W project@PostConstruct głównym scenariuszem jest załadowanie części danych cache podczas inicjalizacji servleta.
Notatki:
Użycie tej adnotacji wpływa na czas rozpoczęcia usługi. Serwer skanuje wszystkie pliki w WEB-INF/classes oraz wszystkie pakiety jar pod WEB-INF/lib przy starcie.
|