最初の applicationContext はweb.xml;の一部としてロードされることに注意してください。これは以下で言及されています。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>META-INF/spring/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>myOwn-controller</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>META-INF/spring/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
以下のコードでは、もう 1 つ applicationContext を作成しようとします。
private static final ApplicationContext context =
new ClassPathXmlApplicationContext("beans.xml");
との違いを見るbeans.xmlapplicationContext.xml
また、appliationContext.xmlunder<META-INF/spring/>が with で宣言されている場合<import resource="beans.xml"/>、これはの同じ場所に をappliationContext.xmlロードしています。beans.xmlMETA-INF/springappliationContext.xml
一方; コードで; 以下のように宣言されている場合
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
WEB-INF/classesこれはeclipse の OR でbeans.xml を見ていsrc/main/resourcesます。
beans.xml[ at src/main/resourcesthenを追加した場合はWEB-INF/classes、WAR の作成中に at に配置される可能性があります。]
したがって、完全に2 つのファイルが検索されます。
applicationContext.xml以下のようにインポート中にクラスパスルックアップを追加することで、この問題を解決しました
<import resource="classpath*:beans.xml" />
ClassPathXmlApplicationContext("beans.xml")Javaコードの行を削除して、ロードされるApplicationContextが1つだけになるようにします。