0

Spring 3.xMVC@Controllerアノテーションを使用しています。私のservlet.xmlには次のエントリがあります。

<context:component-scan base-package=”com.my.controllers.package”/>

私のウェブアプリは、Googleのアプリエンジンで60秒以内に初期化して起動する必要があります。このクラスパススキャンが原因で、マイニングに時間がかかります(このリンクでは、 App Engineでの「コンポーネントスキャンの使用を減らすまたは回避する」の重要性について説明しています)。

次の行をservlet.xmlに追加しました

    <bean id=”myComponentBean” class=”org.foo.MyComponent”/>

これで、@ Controllerを追加するかどうかに関係なく、コントローラーはロードされません。すべてのURLは404になります。

質問:

1)では、コンポーネントスキャンに依存せずにSpring 3.x MVCコントローラーをWebコントローラーとして動作させるにはどうすればよいですか?

2)googleにバグを報告したとき、「コンポーネントスキャン」を削除し、「classLoader.getResource()を使用して必要なクラスを明示的に定義する」ように求められました。classLoader.getResource()を使用してMVCコントローラーをロードするにはどうすればよいですか?

PS:AppEngineでのクラスパススキャンには既知の問題があります。それについて議論することはここで余談になります。だから私は詳細をスキップしました。

4

1 に答える 1

0

あなたはすでにそれを正しくやっています。でコントローラーを定義し、サーブレット構成に配置します<bean class="..." /><mvc:annotation-driven />それだ!

アップデート:

<context:annotation-config />また、一部の注釈(、、@EJBなど@PersistenceContext)をSpringで処理する必要がある場合もあります。

于 2012-12-05T23:29:55.290 に答える