1

たとえばApplicationScopeでBeanを注入し、インスタンス化されていない場合、CDIはnullを返すと思います。

ただし、新しいインスタンスを作成し、後でそれを注入しようとすると、正常に機能し、それ以降は正常に機能し続けます。

ただし、JSF依存性注入では、一度作成する必要はありませんでした。JSFは次のようなことをすると思います

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

またはおそらく

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

else return Instance;

私はCDIが次のようなことをすると信じていますが

AtInjectionPoint () {
return Instance;

ここで私についてきてもらえますか?私の問題は、基本的に、一度作成しない限り、すべての applicationscoped Bean が null であることです。CDI がこれを何らかの形で処理し、最初の 2 つの疑似コード例の 1 つと同じように動作することを切望しています。

これについてもっと知っている人はいますか?

4

1 に答える 1

2

CDI Bean は、最初に参照された時点でコンテナーによって自動的に作成されます。自分でインスタンス化する必要はありません。

なぜそのような行動を経験するのかわかりません。おそらく、jsf マネージド Bean アノテーションと CDI アノテーションを混在させていますか? または、コンストラクターで注入された Bean にアクセスしようとしていますか?

于 2012-04-25T12:53:42.600 に答える