[英]Convert web.xml to java config in Spring Boot
I'm currently trying to move my project from Java EE to Spring Boot project. 我目前正在尝试将我的项目从Java EE迁移到Spring Boot项目。 However, I've been stuck and confused to replacing the web.xml in java config.
但是,我一直陷入困惑,无法在Java配置中替换web.xml。
I tried to replaced it, but it is not working. 我试图更换它,但是它不起作用。 The project
web.xml
file contains some filters
and servlet
. 项目
web.xml
文件包含一些filters
和servlet
。 The details of web.xml file are as below : web.xml文件的详细信息如下:
<servlet>
<servlet-name>robinTest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>robinTest</servlet-name>
<url-pattern>/secureServices/ </url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>robinTest</servlet-name>
<url-pattern>/simple/ </url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
classpath:application-context-1.xml
classpath:application-context-2.xml
</param-value>
</context-param>
<filter>
<filter-name>robinTestFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>robinTestFilter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>robinTestFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<filter>
<filter-name>OpenSession Filter</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
<init-param>
<param-name>flushMode</param-name>
<param-value>COMMIT</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>OpenSession Filter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
I already replace the applicationContext.xml
, application-context-1.xml
and application-context-2.xml
files in JavaConfig file but i am not sure, how would i replace the servlet
, listener
and filter
in java config files. 我已经替换了JavaConfig文件中的
applicationContext.xml
, application-context-1.xml
和application-context-2.xml
文件,但是我不确定如何替换Java配置文件中的servlet
, listener
filter
和filter
。
I tried to replace it but it is not working. 我试图更换它,但是它不起作用。 The sample code are below :
示例代码如下:
import java.util.HashMap;
import java.util.Map;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate5.support.OpenSessionInViewFilter;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.DelegatingFilterProxy;
import org.springframework.web.servlet.DispatcherServlet;
@Configuration
public class AppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.scan("org.robin.test");
// container.se
container.addListener(new ContextLoaderListener(context));
ServletRegistration.Dynamic dispatcher = container.addServlet("robinTest", new DispatcherServlet(context));
dispatcher.setLoadOnStartup(2);
dispatcher.addMapping("/simple/");
dispatcher.addMapping("/secureServices/");
FilterRegistration.Dynamic filter = container.addFilter("robinTestFilter", DelegatingFilterProxy.class);
filter.setInitParameter("targetBeanName", "robinTestFilter");
filter.addMappingForUrlPatterns(null, true, "/*");
FilterRegistration.Dynamic filterSession = container.addFilter("OpenSession Filter", OpenSessionInViewFilter.class);
Map<String, String> filterMap=new HashMap<>();
filterMap.put("singleSession", "true");
filterMap.put("sessionFactoryBeanName", "sessionFactory");
filterMap.put("flushMode", "COMMIT");
filterSession.setInitParameters(filterMap);
filterSession.addMappingForUrlPatterns(null, true, "/*");
}
}
Help me out to rid off this problem so that i can focus on other works. 帮助我摆脱这个问题,以便我可以专注于其他作品。
Thanks in advance. 提前致谢。
I think you need to extend WebMvcConfigurer
(apidoc) or WebMvcConfigurerAdapter
to hook-up your pre-existing classes. 我认为您需要扩展
WebMvcConfigurer
(apidoc)或WebMvcConfigurerAdapter
来连接您先前存在的类。 Don't implement WebApplicationInitializer, which you are doing above. 不要实现上面正在做的WebApplicationInitializer。
You don't need to create any ApplicationContext instances yourself, like you do above 您不需要自己创建任何ApplicationContext实例,就像上面一样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.