Задать вопрос
Witold
@Witold

Как работает аннотация @Inject?

Здравствуйте. Попробую пояснить свой вопрос на примере.

Имеется класс-сущность, отображаемая в БД, и класс-контроллер для неё:
public class Controller {
	@Inject
	private EntityManager em;
<...>
}


При создании экземпляра этого класса:
<...>
	public void add() {
		Controller с = new Controller();
		с.save(new Entity("habrahabr"));
	}
<...>
поле em равно null. (К проекту в качестве провайдера подключен hibernate.)


В какой момент времени и при каких условиях «срабатывает» данная аннотация?
  • Вопрос задан
  • 16596 просмотров
Подписаться 2 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 5
@bobzer
Java EE Developer
В какой момент времени и при каких условиях «срабатывает» данная аннотация?
Для того, чтобы аннотация сработала, требуется наличие настроенного источника данных, развертываемого сервером JBoss до старта вашего приложения (что достигается указанием зависимостей в вашем развертываемом модуле), а также подключение вашей бизнес-логики в качестве модуля в EAR, для чего в application.xml указать
<module>
        <java>ваша-логика.jar</java>
</module>

И, да, обычно указывается аннотация @PersistenceContext либо @PersistenceUnit
Ответ написан
Комментировать
eugenius_nsk
@eugenius_nsk
1. Аннотация @Inject относится к CDI и управляется им (референсная реализация — Weld).
2. Любой dependency injection фреймворк требует управления бинами через него, соответственно создавать объекты через new в общем случае нельзя. Если вам требуется экземпляр Controller-а — создавайте его так же, через @Inject.
Ответ написан
@tsegorah
А почему Inject у вас? а не @PersistenceContext(unitName = «Blablabla») и тд? Может я что-то не правильно понял в вашем вопросе, но я всегда использую @PersistenceContext.
Ответ написан
Losted
@Losted
Software Architect
А что у вас управляет application context?
Ответ написан
Комментировать
@kxyu
Как работает аннотация Inject?

Никак. Аннотации вообще ничего не делают.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы