CDI @Inject или обычный старый java ee 5 аннотаций

Допустим, у меня есть EJB без состояния, как показано ниже:

@Stateless
public class MyService {

    @PersistenceContext(unitName="persistence")
    private EntityManager em;

    ...
}

Так что это инъекция с java ee 5 аннотациями, например, @PersistenceContext. Если я использую CDI, я не могу просто использовать @Inject, право? Мне нужно создать производителя для этого квалификатора использования, как показано ниже

class DBProducer {
    @Produces
    @PersistenceContext(unitName = "persistence")
    @MyDatabase
    private EntityManager em;
}

Я не против количества LOC. Мой вопрос, каким способом я должен использовать? Можно ли смешивать эти два: CDI @Inject и те старые аннотации Java EE 5, как @EJB, @PersistenceContext и т.д., или лучше придерживаться CDI и использовать его везде?

2 ответа

Вы можете сделать любой из них. Разница довольно незначительна для большинства людей (я получаю прокси или реальный объект?).

Не все могут быть введены с помощью @Inject.

В конце концов все должно перейти к этому, но я боюсь, что это может быть Java EE 9 или даже 10, прежде чем это произойдет.

Наличие @Inject везде должно сделать его более простым для настройки альтернатив и расширений.

Другие вопросы по тегам