Я хочу понять, какова роль @EJB
и что делает контейнер во время инъекции.Какова роль аннотации @EJB
Я новичок в Java EE, и на данный момент я использую инъекции зависимостей для использования EJB, потому что я научился с помощью этого метода.
К примеру, у меня есть локальный интерфейс
@Local
public interface MyInterface
тогда я реализую этот интерфейс
@Stateless
public class MyInterfaceImpl implements MyInterface
и когда я хочу использовать EJB, я пишу
@EJB
MyInterface ejb;
Во-первых, я не понимаю, что происходит в контейнере во время инъекционных зависимостей.
Кроме того, почему лучше (или не может быть), чтобы использовать интерфейс для вызова EJB, тогда как использовать EJB (который, по моему мнению, будет более прямой)
MyInterfaceImpl ejb;
ejb.myMethod();
Спасибо, Петр. Если у меня есть интерфейс и 3 реализации, как контейнер может знать EJB? Я полагаю, используя параметры аннотации. Но в этом случае нам нужно перекомпилировать код для замены реализации, не так ли? – federem
Да, вы правы, если используете параметры аннотаций, такие как beanName или beanInterface. Но помните, что вы можете сделать то же самое в дескрипторе развертывания ('ejb-jar.xml'). Это чисто зависящее от развертывания. Более того, представьте, что у вас есть EAR (или WAR), и у вас есть интерфейс и реализации в разных JAR-системах внутри него. Затем вы можете решить, какие JAR станут частью вашего EAR во время развертывания - чтобы убедиться, что только одна реализация EJB-интерфейса находится в EAR/WAR. –