Импорт пакета EJB против внедрения ресурсов - PullRequest
0 голосов
/ 19 августа 2011

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

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

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

Спасибо

1 Ответ

1 голос
/ 19 августа 2011

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

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

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

...