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