@Inject, @Resource i @EJB w Java EE, różnice pomiędzy nimi.

0

Witam. Zastanawiam się nad różnicą tych trzech adnotacji. Za pomocą @ejb możemy wstrzykiwać tylko komponenty EJB o ile dobrze rozumiem. Zaś za pomocą @Inject możemy wstrzykiwać wszystko zarówno komponenty EJB, beany CDI, managedBeany itp. Zaś co nowego wnosi adnotacja @Resource i czym różni się od @Inject? Ogólnie by wychodziło na to, że i @ejb możemy zastąpić @Inject i wyjdzie na to samo? Czy mógłby mnie ktoś bardziej obeznany oświecić czym różni się wstrzykiwanie za pomocą tych trzech adnotacji?

I jeszcze takie pytanie na marginesie dotyczące A Message-Driven Bean. Jakie jest ich praktyczne zastosowanie w projektach? W internecie przykłady są raczej dość trywialne.

1
  1. EJB pozwala wstrzykiwać zdalne obiekty szukane za pomocą JNDI, Inject nie
  2. Bo message driven beans są mniej funkcjonalne od JMSa i ten drugi raczej jest częściej stosowany.
0

Ok. Akurat o tym EJB i Inject przed chwilą znalazłem dobre wyjaśnienie: http://www.adam-bien.com/roller/abien/entry/inject_vs_ejb
A co z tym @Resources?

1

@Resource pozwala na wyszukiwanie obiektu z JNDI. Za jego pomoca powinienes byc w stanie wstrzyknac dowolny obiekt z katalogu (np. DataSource do bazy, albo jakis obiekt trzymany na serwerze). Kiedys probowalem wstrzykiwac za pomoca @Resource normalne EJB i tez dzialalo: byl to jakby taki skrocony zapis dla lookup wykonywanym na InitialContext.

Na przyklad:

    //@EJB
    @Resource(lookup = "java:global/projekt-ear-1.0-SNAPSHOT/projekt-ejb-1.0-SNAPSHOT/UsernameFacade!pl.projekt.dao.UsernameFacadeLocal")
    private UsernameFacadeLocal usrDao;

Co do Inject, jest to zwiazane ze standardem JSR-330. Po prostu ustandaryzowany zapis dependency injection niezalezy od vendora: np. zostal obsluzony w Springu, CDI. Potrafi mniej, ale pozwala na latwiejsza zmiane dostawcy IoC.

1 użytkowników online, w tym zalogowanych: 0, gości: 1