3

web.xml ファイルで構成されたスプリング ルート Web コンテキストがあります。この親との子コンテキストもいくつかあります。すべての子コンテキストは手動で作成されます:

 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"ApplicationContext/beans.xml"}, rootApplicationContext);

この子コンテキストでセッションを管理し、スコープ付き Bean を要求したいと考えています。

子コンテキストを正しく作成および構成して、Web アプリケーション スコープを処理できるようにする方法は?

セッションスコープのBeanを自動配線しようとすると、次のエラーが発生します(明らかに):

java.lang.IllegalStateException: No Scope registered for scope 'session'
4

1 に答える 1

4

あなたが抱えている問題は、

session-scope : 単一の Bean 定義を HTTP セッションのライフサイクルにスコープします。Web 対応の Spring ApplicationContextのコンテキストでのみ有効です。

そして、あなたClassPathXmlApplicationContextウェブ対応ではありません。

GenericWebApplicationContext代わりにに行くことをお勧めしますClassPathXmlApplicationContext

次のようなことを試すことができます:

GenericWebApplicationContext context = new GenericWebApplicationContext(servletContext);
context.setParent(rootApplicationContext);
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(context);
xmlReader.loadBeanDefinitions(new ClassPathResource("ApplicationContext/beans.xml"));
context.refresh();

Spring javadoc は便利なソースです:

于 2013-01-28T12:07:55.907 に答える