요컨대 : 혼합 ( @Singleton
및 @ApplicationScoped
)도 가능하며 일부 시나리오에서는 의미가 있습니다.
(그리고 내에서 예상대로 작동합니다!)
지금까지의 다른 답변 외에도 실제 시나리오에서 명확하게 설명하기 위해 몇 가지 포인트를 추가하고 싶습니다.
나를 위해이 질문 은 애플리케이션 시작시 애플리케이션 범위 Bean을 강제로 인스턴스화하는 방법에서 개발되었습니다 .
일부 토론에서 나는 이것을 언급했으며 지금까지 유효한 주장을 찾을 수 없습니다.
많은 실제 시나리오 / 설정 에서 추상 / 모델링 관점에서 어떤 것이 EJB인지 애플리케이션 범위의 관리 빈인지 (또는 처리 될 것인지) 확실히 말하기는 어렵다고 말할 수 있습니다.
(논쟁의 여지가 있지만 결정적이지 않은) 지금까지 반대하는 주장 (내 관점에서 볼 때) : (@BalusC 및 기타 모든 것 : 결론이 내려지는 것을보고 싶지만 그렇지 않다면 위의 내용이 사실 일 수 있지만 그럼에도 불구하고 주장은 여전히 독자가 차이점 / 장점 / 단점 / 나쁜 / 좋은 관행을 얻을 수 있도록 도와줍니다)
EJB 대 관리 Bean
BalusC : 그것은 관리 빈이 아닌 EJB입니다. 이것은 상당히 다릅니다. EJB는 백엔드에서 실행되고 프런트 엔드에서 관리되는 Bean입니다. EJB는 트랜잭션 컨텍스트에서도 실행됩니다. [...] 당신은 단지 엔터프라이즈 빈과 관리 빈을 혼동했고 나는 그것을 지적했습니다.
그러나:
나 : 나는 당신이 그다지 정확하지 않고 의미 / 용법을 과장하는 것 같고 그것은 나에게 논쟁의 여지가있는 것 같습니다. http://en.wikipedia.org/wiki/Enterprise_JavaBeans
EJB (Enterprise JavaBeans)는 엔터프라이즈 소프트웨어의 모듈 식 구성을위한 관리되는 서버 소프트웨어이며 여러 Java API 중 하나입니다. EJB는 애플리케이션의 비즈니스 로직을 캡슐화하는 서버 측 소프트웨어 구성 요소입니다.
엔터프라이즈 빈의 유형
"Stateful", "Stateless"또는 "Singleton"일 수있는 Session Beans [3] [...]
메시지 구동 콩 [...]
... 내 경우에도 여전히 사실입니다.
싱글 톤 EJB 대 애플리케이션 범위 Bean
잠금
BalusC : 싱글 톤 EJB는 애플리케이션 범위 빈과 동일하지 않습니다. 싱글 톤 EJB는 읽기 / 쓰기가 잠겨 있으므로 염두에 둔 작업에 대해 잠재적으로 비효율적이거나 과도하게 복잡해집니다. 짧은 이야기 : 좋은 Java EE 책을 잡고 작업에 적합한 도구를 사용하는 방법을 배웁니다. 한 가지 방법은 다른 방법이 아닙니다. 작동한다고해서 올바른 도구라는 의미는 아닙니다. 큰 망치는 나사를 조일 수 있지만 반드시 올바른 도구는 아닙니다. :)
그러나:
(여기에서 큰 망치를 볼 수 없습니다-죄송합니다 ...) 잠금 기본값을 아는 것이 좋지만 (알지 못함) 이것은 다시 잘못된 것 같습니다. Oracle Java EE 6 Tutorial on Managing Concurrent Access in a 싱글 톤 세션 빈
싱글 톤 세션 빈을 생성 할 때 싱글 톤의 비즈니스 메소드에 대한 동시 액세스는 컨테이너 관리 동시성과 Bean 관리 동시성의 두 가지 방법으로 제어 할 수 있습니다. [...]
기본적으로 싱글 톤은 컨테이너 관리 동시성을 사용하지만 @ConcurrencyManagement (CONTAINER) 주석을 싱글 톤의 클래스 수준에 추가하여 동시성 관리 유형을 명시 적으로 설정할 수 있습니다.
@ApplicationScoped
와 사이의 실제적인 차이점에 대한 설명이 있습니다@Singleton
.