2012-04-25 4 views
0

아직 100 % 확실하지는 않지만 나에게는 그다지 익숙하지 않습니다.CDI : 새 인스턴스 대신 null 가져 오기

나는 ApplicationScope에 콩을 주입하면 인스턴스화 된 적이 없다고 믿는다. CDI는 널 줄 것이다.

그러나 새 인스턴스를 만든 다음 나중에 삽입하려고하면 잘 작동하고 그 후에는 계속 작동합니다.

JSF depedency injection에서 한 번도 생성하지 않아도됩니다. 나는 CDI는

AtInjectionPoint() { 
return Instance; 

같은 당신이 여기 나를 따라 할 수 않는 생각하지만 JSF는

//pseudo code 
AtStartUp() { 
if (applicationScoped) 
create new Instance(); 

또는 가능

AtInjectionPoint() { 
if (applicationScoped && null) 
return new Instance(); 

else return Instance; 

처럼 뭔가를 할 것이라고 생각? 내 문제는 기본적으로 우리가 한 번 생성하지 않는 한 모든 응용 프로그램이 적용된 bean은 null입니다. 우리는 CDI가 어떻게 든 이것을 처리하고 처음 두 의사 코드 예제 중 하나처럼 행동하는 것을 매우 좋아할 것입니다 ...

누구든지 이것에 대해 더 알고 있습니까? 이것에 대한 정보를 찾기가 정말 어려워 보입니다.

답변

1

CDI 빈은 처음 참조 될 때 컨테이너에 의해 자동으로 작성됩니다. 직접 인스턴스화 할 필요가 없습니다.

왜 이러한 동작이 발생하는지 잘 모르겠습니다. 어쩌면 jsf 관리 bean annotation과 CDI annotation을 섞을 것입니까? 또는 생성자에서 삽입 된 빈에 액세스하려고합니까?

+0

예프가 섞였습니다. 꽤 내가 얼굴 - config에서 그것을 편집하지만, 어떻게 든 그것은 나와 붙어 있는지 확인했다. 감사합니다. –

관련 문제