@EJB를 사용할지 @Inject를 사용할지
나는 다음과 같은 질문을 발견했다.@Inject와 @EJB의 차이점은 무엇입니까? 하지만 저는 더 이상 깨닫지 못했습니다.Java EE를 해본 적도 없고 의존성 주입을 해본 적도 없기 때문에 무엇을 사용해야 할지 잘 모르겠습니다.
있나@EJB
옛날 주사법?사용 중 이 주석을 사용할 때 EJB 컨테이너에 의해 주입됩니까?@Inject
새로운 CDI 프레임워크를 사용하시겠습니까?그게 차이점인가요? 그리고 제가 사용해야 하는 것은@Inject
대신@EJB
이런 경우라면?
그@EJB
는 EJB만을 주입하는 데 사용되며 현재 상당 기간 사용할 수 있습니다. @Inject
는 모든 관리 대상 빈을 삽입할 수 있으며 새로운 CDI 사양의 일부입니다(Java EE 6 이후).
간단한 경우 간단히 변경할 수 있습니다.@EJB
로.@Inject
. 보다 고도의 경우(예: 의존도가 높은 경우)@EJB
님의 특성beanName
,lookup
또는beanInterface
)를 사용하기 위해서입니다.@Inject
정의해야 합니다.@Producer
필드 또는 메서드.
이러한 리소스는 다음 두 리소스 간의 차이를 이해하는 데 도움이 될 수 있습니다.@EJB
그리고.@Produces
그 장점을 살리는 방법:
Antonio Goncalves 블로그:
CDI 파트 I
CDI 파트 II
CDI 파트 III
JBoss 용접 문서:
CDI 및 Java EE 생태계
Stack Overflow:
조건에 따라 @EJB bean 주입
@Inject
어떤 콩도 주입할 수 있지만@EJB
는 EJB만 주입할 수 있습니다.어느쪽이든 EJB를 주입할 수는 있지만@Inject
온통.
업데이트: 이 답변은 올바르지 않거나 최신이 아닐 수 있습니다.자세한 것은, 코멘트를 봐 주세요.
에서 전환했습니다.@Inject
로.@EJB
왜냐면@EJB
원형 주입이 가능한 반면,@Inject
토할 것 같아.
세부사항:필요했어요@PostConstruct
을 부르다@Asynchronous
동기화할 수 있습니다.비동기 호출을 하는 유일한 방법은 원래 호출을 다른 빈의 메서드로 하고 원래 빈의 메서드를 콜백하는 것이었습니다.이렇게 하기 위해서는 각 콩이 서로 참조가 필요했습니다. 즉, 원형입니다. @Inject
이 작업에 실패했습니다.@EJB
일했다.
여기 그 주제에 대한 좋은 토론이 있다.Gavin King은 원격이 아닌 EJB에 대해 @EJB보다 @Inject를 권장합니다.
http://www.seamframework.org/107780.lace
또는
https://web.archive.org/web/20140812065624/http://www.seamframework.org/107780.lace
순서: @EJB 또는 @Inject로 주입하시겠습니까?
- 2009년 11월 20일 20:48 America/New_York| Link Gavin King
EJB 로컬 참조는 항상 직렬화 가능해야 하므로 이 오류는 매우 이상합니다.글라스피쉬에 벌레라도 있나?
기본적으로는 @Inject가 항상 좋습니다.그 이유는 다음과 같습니다.
it is more typesafe, it supports @Alternatives, and it is aware of the scope of the injected object.
원격 EJB에 대한 참조를 선언하는 경우를 제외하고 @EJB를 사용하지 않는 것이 좋습니다.
그리고.
순서: @EJB 또는 @Inject로 주입하시겠습니까?
2009년 11월 17일 17:42 America/New_York| Link Gavin King
@EJB는 원격 EJB가 더 낫다는 의미입니까?
원격 EJB의 경우 클라이언트가 메타데이터에 액세스할 수 없기 때문에 bean 클래스에 한정자, @Alternative 등의 메타데이터를 선언할 수 없습니다.또한 로컬 케이스(글로벌 JNDI 이름)에 필요 없는 추가 메타데이터를 지정해야 합니다.따라서 이러한 모든 것은 다른 곳으로 이동해야 합니다. 즉, @Produces 선언입니다.
또한 @EJB와 @Inject를 사용할 때 세션빈 ID의 차이를 이해하는 것도 도움이 될 수 있습니다. 다음 양양음음음음음음음음음음 will will will will will will will will will 이다.true
:
@EJB Cart cart1;
@EJB Cart cart2;
… if (cart1.equals(cart2)) { // this test must return true ...}
@EJB가 아닌 @Inject를 사용하면 동일하지 않습니다.
자세한 내용은 스테이트리스 세션빈 ID도 참조해 주세요.
예를 들어 Java EE 5에는 @Resource, @PersistentUnit 또는 @EJB 주석이 이미 있습니다.그러나 이는 특정 리소스(데이터 소스, EJB 등)와 특정 구성요소(서블릿, EJB, JSF 백업 빈 등)로 제한되었습니다.CDI를 사용하면 @Inject 주석 덕분에 거의 모든 곳에 주입할 수 있습니다.
EJB와 함께 @EBJ를 사용합니다.이것은, 인터페이스의 타입(계층 애플리케이션)에 의존하지 않는 별개의 비즈니스 로직 레이어를 작성하기 위해서입니다.
이것에 의해(적절하게 사용) 비즈니스 로직을 (복수의) 사용자 인터페이스 애플리케이션으로부터 개별적으로 변경 및 도입할 수 있습니다.
언급URL : https://stackoverflow.com/questions/8138232/should-i-use-ejb-or-inject
'programing' 카테고리의 다른 글
Vue 개체를 요소에 연결할 때 가장 권장되는 구문은 무엇입니까? (0) | 2022.08.15 |
---|---|
메이븐의 '폼' 패키지는 무엇입니까? (0) | 2022.08.15 |
Arrays.asList() vs Collections.singletonList() (0) | 2022.08.15 |
vue.select 2 다중 선택 (0) | 2022.08.08 |
Vuex 모듈에서 상속하는 방법 (0) | 2022.08.08 |