現在、プロジェクトをJava EEからSpring Bootプロジェクトに移動しようとしています。ただし、ディスパッチャサーブレットとweb.xmlの部分で困惑して混乱しているため、web.xmlがプロジェクトによって読み取られなくなったようです。現在のプロジェクトはTomcat 7で実行されています。
web.xml
ファイルには、servlet
、servlet-mapping
、filter
、およびfilter mapping
がたくさんありますが、ディスパッチャ。
web.xml
のサンプルを以下に添付しましたが、バージョンは2.5です。
<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true" version="2.5" xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>displayName</display-name>
<description>description</description>
<resource-ref>
...
</resource-ref>
<filter>
<filter-name>Some Filter Name</filter-name>
<filter-class>Some Filter Class</filter-class>
<init-param>
<param-name>Some Param Name</param-name>
<param-value>Some Value</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Some Filter Name</filter-name>
<url-pattern>Some url-pattern</url-pattern>
</filter-mapping>
<context-param>
<param-name>Some Param Name</param-name>
<param-value>Some Param Value</param-value>
</context-param>
<servlet>
<servlet-name>Some Servlet Name</servlet-name>
<servlet-class>Some Servlet Class</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Some Servlet Name</servlet-name>
<url-pattern>Some Url Pattern</url-pattern>
</servlet-mapping>
</web-app>
Qns:
web.xml
のすべてのものをスプリングディスパッチャーに依存するように変換する必要がありますか?web.xml
から離れて、スプリングブートプロジェクトに進む方法はありますか?誰も私をここに沿って案内してもらえますか?ありがとう!!
pom.xml
でなければなりません。スプリングブートを使用する方法は、すべてのxml構成、web.xmlなどをスプリングブートの自動構成+ Java構成に移動することです。Springブートは、Java構成ですべてを実行し、その原則に従う場合に非常に良好に機能します。私の経験から、XML構成とレガシースプリングのマージを開始すると、自動構成プロセスが中断され始めます。新しいスプリングブートのベストプラクティスに準拠するために、できる限りのことを試してみることをお勧めします。
web.xml
を保持できますが、追加する必要があります
<listener>
<listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>
</listener>
web.xml
で。そして、pom.xml
の必要な依存関係。
すべてのリスナークラス、フィルターはJavaクラスで変換します。このクラスは@Configuration.
になります
インターセプターがある場合は、構成クラスに移動できます。
Spring-bootはxmlベースの設定よりも注釈を優先するため、web.xml
を使用してservlet, servlet-mapping, filter
およびfilter mapping
を設定する代わりに、注釈ベースの自動Beanを使用できますBeanを登録するための作成。
@Bean
アノテーションを使用してBeanを作成し、コンポーネントのスキャン中にspring-bootが自動的にそれらを取得するようにします。参考: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
@Configuration
または@Component
アノテーションでアノテーションを付けたクラスを作成し、FilterRegistrationBean
のBeanを作成して登録できます。フィルター。@ Beanアノテーションを使用して、フィルター自体のBeanを作成することもできます。たとえば、次のxmlベースのフィルターに相当
<filter>
<filter-name>SomeUrlFilter</filter-name>
<filter-class>com.company.SomeUrlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SomeUrlFilter</filter-name>
<url-pattern>/url/*</url-pattern>
<init-param>
<param-name>paramName</param-name>
<param-value>paramValue</param-value>
</init-param>
</filter-mapping>
同等の注釈ベースは次のとおりです。
@Bean
public FilterRegistrationBean someUrlFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(someUrlFilter());
registration.addUrlPatterns("/url/*");
registration.addInitParameter("paramName", "paramValue");
registration.setName("Filter");
registration.setOrder(1);
return registration;
}
@Bean(name = "someUrlFilter")
public Filter someUrlFilter() {
return new SomeUrlFilter();
}
web.xml
を使用する場合、たとえばXMLベースの構成を使用できます。たとえば、Web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/dispatcher.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
別のファイルdispatcher.xmlで、次のようにBeanを作成できます。
<beans ...>
<context:component-scan base-package="com.demo"/>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
Spring web.xml
は通常src/main/webapp/WEB-INF
にあることに注意してください。
かなりの時間を費やしたので、3つのことを共有して、コマンドラインから機能するようにしました。
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
あなたのmvc設定ファイル
@Configuration public class MvcConfig extends extends WebMvcConfigurerAdapter {@Bean public InternalResourceViewResolver viewResolver(){InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix( "/ Representation /"); resolver.setSuffix( "。jsp");リゾルバを返します。 }