正如標題所述。作爲Jar運行的Spring Boot項目是否需要web.xml文件?
我正在遷移使用基於XML的配置的Spring-MVC應用程序。
我不知道將位於web.xml文件中的過濾器移動到新的Spring Boot項目的位置。
正如標題所述。作爲Jar運行的Spring Boot項目是否需要web.xml文件?
我正在遷移使用基於XML的配置的Spring-MVC應用程序。
我不知道將位於web.xml文件中的過濾器移動到新的Spring Boot項目的位置。
您可以使用註釋:本 @ImportResource
尋找更多細節here
沒錯,但我更喜歡使用Java而不是舊的xml配置。 –
爲了使用編程等價物在彈簧啓動等價物中移動過濾器,可以通過編程方式配置'ServletContext'。這將需要實現'WebApplicationInitializer'。覆蓋onStartup方法 public void onStartup(ServletContext container)throws ServletException container.addFilter(「YourFilter1」,YourFilter.class).addMappingForUrlPatterns(null,false,「/ *」); }' 整個遷移的一個很好的解釋可以參見[這裏](http://www.robinhowlett.com/blog/2013/02/13/spring-app-migration-from-xml-to-java基-配置/) –
您可以使用Java的配置定義過濾器使用Spring啓動時。
正如在documentation中所提到的,您只需要將該過濾器聲明爲配置類中的Bean即可。
@Configuration
public class WebConfig {
@Bean
public Filter someFilter() {
return new someFilter();
}
}
如果由於某種原因「SomeFilter」不是春託管Bean,或者如果你需要自定義過濾器的行爲,那麼你可以按照如下
@Configuration
public class WebConfig {
@Bean
public Filter someFilter() {
return new someFilter();
}
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(someFilter());
return registration;
}
}
如果註冊使用FilterRegistrationBean過濾器的多個過濾器,你可以使用FilterRegistrationBean.setOrder()指定順序in the doc
最後,我用這種方式使用Java配置(no xml)註冊了攔截器。
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Autowired
ControllerInterceptor controllerInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.controllerInterceptor).addPathPatterns(this.buildPaths());
}
private String[] buildPaths() {
String paths[] = { "/api/example1/**", "/api/example2/**" };
return paths;
}
}
沒錯,但我更喜歡使用Java而不是舊的xml配置。 –