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 везде должно сделать его более простым для настройки альтернатив и расширений.