В чем разница между импортом POJO и внедрением EJB? - PullRequest
0 голосов
/ 02 ноября 2011

Когда я пытался создать динамический веб-проект в Eclipse, я получил в Eclipse несколько уведомлений о том, что мне нужно не только ссылаться на EJB в сборке, но и импортировать этот EJB-пакет в дополнение к внедрению зависимости @EJB, которое я использовал ,

Может кто-нибудь помочь мне объяснить, зачем нужны все три и что именно происходит. Причина, по которой я спрашиваю, заключается в том, что для меня импорта одного пакета EJB было бы достаточно, чтобы поместить класс EJB в область действия вызывающего класса, и это указывает на то, что у меня пока нет четкого понимания того, чего JEE6 пытается достичь с помощью аннотаций.

Редактировать: чтобы уточнить, это общий вопрос о EJB. Это на самом деле работает, мне просто любопытно, почему импорт бина необходим в дополнение к внедрению зависимости. Кажется, что они оба просто разные способы ссылаться на класс EJB в другом файле (сервлет или бин и т. Д.), Но я не думаю, что это правда, должна быть НЕКОТОРАЯ конкретная причина, по которой внедрение выполняется с импортом пакета / класс бобов.

Спасибо,

1 Ответ

1 голос
/ 02 ноября 2011

Это звучит так, как будто вы неправильно понимаете значение ключевого слова import в Java. Он не включает исходный код класса в текущий класс, как в PHP include(), CSS @import, JSP <jsp:include> или что-то в этом роде. Он ничего не вставляет в код.

import является обязательным, когда вы используете в коде не-FQN имена классов, чтобы компилятор понимал, на какой класс именно вы ссылаетесь. Представьте, что у вас есть класс с именем FooService в нескольких разных пакетах, отличных от текущего пакета; без импорта или явного FQN компилятор не знал бы, на какой объект вы ссылаетесь, и, следовательно, не может делать никаких проверок, если код функционален нормально (т. е. класс используется и к нему обращаются правильным образом с правильным имена полей / методов и правильные аргументы методов и т. д.).

Если вы обнаружите, что ключевое слово import вызывает беспокойство по какой-то неочевидной причине, то вы также можете просто объявить класс с помощью FQN (полное имя, включая полное имя пакета). E.g.:

@EJB
com.example.business.FooService fooService;

Таким образом, вы можете удалить строку import com.example.business.FooService;.

Смотри также:

...