我目前正在尝试将我的项目从Java EE转移到Spring Boot项目。但是,我对调度程序servlet和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
。使用spring boot的方法是将所有xml配置,web.xml等移动到spring boot的自动配置+ java配置。当您在java配置中执行所有操作并遵循其主体时,Spring启动非常有效。根据我的经验,当你开始合并XML配置和传统的弹簧时,它开始打破自动配置过程,并且更好地尽可能地尝试遵守新的Spring引导最佳实践。
web.xml
,但它需要添加
<listener>
<listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>
</listener>
在web.xml
。并且,pom.xml
需要依赖。@Configuration.
Spring-boot更喜欢基于xml配置的注释,所以在你的情况下,你可以使用基于注释的自动bean创建来配置web.xml
和servlet, servlet-mapping, filter
,而不是使用filter mapping
来配置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
。例如:Veb.hml
<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>
请注意,春天web.xml
通常会住在src/main/webapp/WEB-INF
。
花了相当长的一段时间,分享三件我记得要从命令行开始工作的东西。
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>