Dan*_*llo 7 java spring spring-mvc spring-boot
我正在尝试将基于web.xml的Web应用程序转换为spring boot但是在配置HttpRequestHandlerServlet时遇到问题.我的web.xml中有以下内容:
<servlet>
<servlet-name>webServices</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>updateServlet</servlet-name>
<servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>updateServlet</servlet-name>
<url-pattern>/update</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>webServices</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
DispatcherServlet不是问题:
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer
{
public static void main(String[] args)
{
SpringApplication.run(PoolWebApplication.class);
}
@Bean
public DispatcherServlet dispatcherServlet()
{
return new DispatcherServlet();
}
@Bean
public ServletRegistrationBean servletRegistrationBean()
{
return new ServletRegistrationBean(dispatcherServlet(), "/ws/*");
}
}
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何配置updateServlet.
如何在Spring Boot应用程序中配置基于HttpRequestHandlerServlet的servlet?
附加信息:
我尝试了建议的答案,但它对我不起作用.
我没有提到的一件事是UpdateServlet被命名为"updateServlet":Componenet("updateServlet")公共类UpdateServlet实现了HttpRequestHandler
该名称与答案中的bean名称冲突.更改后(更新),我得到:
No bean named 'httpRequestHandlerServlet' is defined
Run Code Online (Sandbox Code Playgroud)
在将updateServlet的名称更改为httpRequestHandlerServlet之后,我得到了
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'httpRequestHandlerServlet' must be of type [org.springframework.web.HttpRequestHandler], but was actually of type [org.springframework.web.context.support.HttpRequestHandlerServlet]
Run Code Online (Sandbox Code Playgroud)
有DispatcherServlet一种更简单的方法,只需添加一行application.properties并从应用程序类中删除 servlet bean。
server.servlet-path=/ws/*
Run Code Online (Sandbox Code Playgroud)
接下来只需将 的定义添加HttpRequestHandlerServlet到您的配置中,而不是DispatcherServlet.
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer
{
public static void main(String[] args)
{
SpringApplication.run(PoolWebApplication.class);
}
@Bean
public HttpRequestHandlerServlet updateServlet()
{
return new HttpRequestHandlerServlet();
}
@Bean
public ServletRegistrationBean updateServletRegistrationBean()
{
return new ServletRegistrationBean(updateServlet(), "/update");
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
注意,usingupdateServlet()方法在这里是绝对合法的,并且可以用来获取SpringBean实例(见下面的注释)。
| 归档时间: |
|
| 查看次数: |
8726 次 |
| 最近记录: |