Spring 3.1 構成で mvc:resources を使用すると問題が発生します。
最初は、Tomcat 6 で Spring 3.0、JPA を統合するプロジェクトに取り組んでいました。Tomcat 6 サーバーでは、web.xml で次のサーブレット マッピングを使用して、アプリケーションから静的コンテンツ (css、js、png など) にアクセスしました。
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
ベスト プラクティスかどうかはわかりませんが、tomcat6 環境では問題なく動作しました。Tomcat 7 では動作しません。そのため、Spring 3.1 に切り替えて、applicationContext で mvc:resources 要素を使用しました。3.1 の xml 名前空間を変更し、applicationContext.xml に 2 行を追加しました。
<mvc:annotation-driven/>
<mvc:resources location="/resources/" mapping="/static/**"/>
上記の 2 行の構成を追加する前は、アプリケーション全体が非常にうまく機能していました。しかし、現在、アノテーションが付けられたすべてのコントローラーがフレームワークによって検出されるわけではありません。アプリケーション ルートに index.jsp やウェルカム ファイルがなく、ルート リクエスト「/」を注釈付きの RootController.java にマッピングしました。そのため、アプリケーションのホームページも読み込まれません。
解決策を求めてネットを調べたところ、mvc:annotation-driven が、フレームワークによって暗黙的に定義されていると思われるデフォルトの Bean 構成を置き換えることがわかりました。このフォーラムで、自分でいくつかの Bean 構成を明示的に定義するという、一部の人々に有効な解決策をいくつか見つけました。次の2行を追加してみました
<bean class ="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class ="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
しかし、残念ながらそれは私の問題を解決しません。それが私が今直面している本当の問題かどうかはわかりませんので、私の現在の設定を確認するための私のapplicationContext.xmlがあります
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com.yewintko.uog.emailcampaignmanager">
<context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>
<tx:annotation-driven/>
<mvc:annotation-driven/>
<mvc:resources location="/resources/" mapping="/static/**"/>
<bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<context:property-placeholder location="classpath:database.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${database.driver}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="EmailCampaignManager"/>
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="${database.platform}"/>
<property name="showSql" value="${database.showSql}"/>
<property name="generateDdl" value="${database.generateDdl}"/>
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
</props>
</property>
</bean>
</beans>
私は春に非常に慣れていないため、applicationContext でどの構成が欠落しているかわかりません。少し暇だったら誰か助けてください。さらに情報が必要な場合は、お知らせください。
よろしくYewint