Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Использование аннотаций @PostConstruct и @PreDestroy с классами Managed-бинов CDI

Классы Managed-бинов CDI и их родительские классы поддерживают аннотации для инициализации и подготовки к уничтожению компонента. Эти аннотации определены в JSR 250: Common Annotations for the Java platform (http://jcp.org/en/jsr/detail?id=250).

Здесь рассматриваются следующие темы:

Инициализация Managed-бина с помощью аннотации @PostConstruct

Инициализация Managed-бина указывает Callback-метод жизненного цикла, который фреймворк CDI должен вызывать после инъецирования зависимости, но до использования инстанцированного объекта.

  1. В классе Managed-бина или любом из его родительских классов определите метод, который выполняет требуемую инициализацию.

  2. Аннотируйте объявление метода с помощью аннотации javax.annotation.PostConstruct.

Когда Managed-бин инъецируется в компонент, CDI вызывает метод после того, как все инъецирования были завершены и все инициализаторы были вызваны.

Примечание:

Как указано в JSR 250, если аннотированный метод объявлен в родительском классе, метод вызывается, если только дочерний класс объявленного класса не переопределяет метод.

Managed-бин UserNumberBean в примере CDI guessnumber-cdi использует @PostConstruct для аннотирования метода, который сбрасывает все поля бина:

@PostConstruct
public void reset () {
    this.minimum = 0;
    this.userNumber = 0;
    this.remainingGuesses = 0;
    this.maximum = maxNumber;
    this.number = randomInt.get();
}

Подготовка к уничтожению Managed-бина с помощью аннотации @PreDestroy

Подготовка к уничтожению Managed-бина указывает Callback-метод жизненного цикла, который сигнализирует о том, что контейнер приложения должен уничтожить компонент приложения.

  1. В классе Managed-бина или в любом из его родительских классов подготовьтесь к уничтожению Managed-бина.

    В этом методе выполняйте любую очистку, которая требуется до уничтожения компонента, как например, освобождение ресурса, содержащегося в бине.

  2. Аннотируйте объявление метода с помощью аннотации javax.annotation.PreDestroy.

CDI вызывает этот метод перед началом уничтожения компонента.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)