Импорт пакетов EJB и внедрение ресурсов

Я новичок в EJB, и есть кое-что, связанное с внедрением ресурсов, которое меня беспокоило некоторое время. Я думаю, что это довольно базовая концепция, но я не мог понять ее самостоятельно. А люди говорят, что глупых вопросов не бывает, так вот:

Чего я не понимаю, так это разницы между импортом пакетов и внедрением ресурсов. Разница, о которой я говорю, заключается не в использовании (они, конечно, используются по-разному), а в значении. Почему EJB не использует импорт пакетов вместо внедрения ресурсов?

Например, у меня есть getInfoBean, реализующий интерфейс getInfo. Чтобы использовать этот компонент в клиенте, я могу выполнить поиск в JNDI или DI с помощью @EJB (если клиент развернут в ACC). В любом случае мне нужно указать имя getInfo. Итак, разве EJB не позволяет import справиться с этим? Разве цель import не в том, чтобы указать какое-то имя, чтобы программа знала о классе или интерфейсе, который она хотела бы использовать?

Спасибо


person NQC    schedule 19.08.2011    source источник


Ответы (1)


Импорт import some.package.getInfoBean в вашем клиенте 1) привязывает клиента к конкретному экземпляру этого bean-компонента и 2) DI происходит во время выполнения и позволяет контейнеру перехватывать все вызовы EJB, т. е. управляемые декларативные транзакции.

Таким образом, компилятору требуются операторы import, чтобы знать, для каких классов строить байт-код. DI — это функция времени выполнения, позволяющая JVM выполнять определенные (часто сложные) действия до, во время или после вызова введенного ресурса.

EDIT: В настоящее время аннотации используются для внедрения зависимостей в Java. Тем не менее, это не означает, что все аннотации относятся к DI. Например, @Override не влияет на поведение во время выполнения, как указано в аннотации @Retention(value=SOURCE), он имеет дело только с исходным кодом. Принимая во внимание, что аннотация @EJB доступна во время выполнения, как указано аннотацию @Retention(value=RUNTIME) на самой аннотации. Эта аннотация является активатором внедрения зависимостей.

person home    schedule 19.08.2011
comment
Таким образом, в основном импорт выполняется во время компиляции, а DI выполняется во время выполнения. Это правильно? - person NQC; 19.08.2011