Witold
@Witold

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

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

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


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


В какой момент времени и при каких условиях «срабатывает» данная аннотация?
  • Вопрос задан
  • 16510 просмотров
Пригласить эксперта
Ответы на вопрос 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?

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

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽