Прежде всего, в Java (5 и выше) «вещи», начинающиеся с @
(например, @Deprecated
), называются аннотациями .
Аннотации предоставляют данные о
Программа, которая не является частью
Сама программа У них нет прямых
влияние на работу кода
они комментируют.
Ваш JavaBeans должен быть настроен на область, если вы хотите использовать его в JSF (определения можно найти здесь ).
@RequestScoped
: объекты с этой областью видны от начала запроса до конца
запроса. Область запроса начинается в начале запроса и заканчивается, когда
ответ отправлен клиенту. Если запрос перенаправлен, объекты видны
на перенаправленной странице, потому что эта страница все еще является частью того же запроса / ответа
цикл. Объекты с областью запроса могут использовать другие объекты без запроса, сеанса,
или область применения. Если вам нужно представить это с точки зрения сервлета, управляемый компонент сохраняется в HttpServletRequest
до конца запроса (когда ответ отправляется клиенту). После этого компонент больше не существует в запросе.
@SessionScoped
: объект с областью действия сеанса видим для любого цикла запроса / ответа, который
принадлежит сеансу. Объекты с этой областью сохраняют свое состояние между
запросы и продолжаются до тех пор, пока объект или сеанс не станут недействительными. Объекты с сессией
область может использовать другие объекты без области видимости, сессии или приложения. По сути, эти объекты хранятся в HttpSession
(снова обратитесь к сервлетам). Каждый сеанс имеет идентификатор сеанса (известный как JSESSIONID
), с которым связан компонент.
ApplicationScoped
: объект с областью применения виден во всех циклах запроса / ответа
для всех клиентов, использующих приложение, до тех пор, пока приложение активно. С точки зрения сервлета это может быть управляемый бин, хранящийся в ServletConfig
.
@NoneScoped
: объекты с этой областью не видны ни на одной странице JSF. При использовании в файле конфигурации они указывают управляемые компоненты, которые используются другими управляемыми компонентами в приложении. Объекты без области видимости могут использовать другие объекты без области видимости.
Для EntityManager
это связано с контекстом постоянства. Он используется для создания и удаления постоянных экземпляров сущностей, для поиска сущностей по их идентификатору первичного ключа и для запроса по всем сущностям. Для получения дополнительной информации обратитесь к спецификации JPA (Java Persistence API) или Hibernate .
@Inject
, означает, что экземпляр является инъекционным. Они следуют за позорным ключевым словом Depency Injection или Inversion of Control (IOC) . Это в основном означает, что когда требуется ресурс (в вашем случае EntityManager entityManager
, контейнер JEE создает для вас ресурс (без необходимости создавать его непосредственно с помощью, например, конструктора и т.
Понятия не имею, что означает @DataRepository
. Никогда раньше не видел.
Надеюсь, это поможет вам.