J'essaie de convertir mon projet en projet Spring Boot (fichier JAR exécutable avec Jetty embedded). Tout fonctionne avec un exemple standard, mais je souhaite migrer mon ancien fichier web.xml vers Spring Boot.
J'ai migré Servlet et Filtres mais je ne comprends pas comment migrer les filtres comme ceci:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>org.granite.config.GraniteConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.granite.gravity.websocket.GravityWebSocketDeployer</listener-class>
</listener>
J'ai créé ma classe @SpringBootApplication et j'ai écrit dans toute la configuration:
@Bean
@Order(1)
public FilterRegistrationBean springSecurityFilterChain() {
FilterRegistrationBean filterRegBean = new FilterRegistrationBean();
DelegatingFilterProxy delegatingFilterProxy = new DelegatingFilterProxy();
filterRegBean.setFilter(delegatingFilterProxy);
List<String> urlPatterns = new ArrayList<String>();
urlPatterns.add("/*");
filterRegBean.setUrlPatterns(urlPatterns);
return filterRegBean;
}
Quelqu'un peut m'expliquer comment les auditeurs devraient être convertis?
Pour RequestContext, lisez this
@Bean
@ConditionalOnMissingBean(RequestContextListener.class)
public RequestContextListener requestContextListener() {
return new RequestContextListener();
}
Pour l'autre auditeur, enregistrez-vous automatiquement lorsque vous utilisez spring-boot en tant que this link implique.
Pour vos propres auditeurs.
public class MyAdditionListeners extends SpringBootServletInitializer {
protected final Log logger = LogFactory.getLog(getClass());
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
WebApplicationContext rootAppContext = createRootApplicationContext(servletContext);
if (rootAppContext != null) {
servletContext.addListener(new YourListenerHere());
}
else {
this.logger.debug("No ContextLoaderListener registered, as "
+ "createRootApplicationContext() did not "
+ "return an application context");
}
}
Enfin, il existe un lien link dans lequel vous pouvez trouver des informations sur les écouteurs et la classe SpringApplication. Lire la section
Spring Boot enregistrera automatiquement tout @Beans
des types suivants avec le conteneur de servlet:
Par exemple, pour enregistrer GravityWebSocketDeployer
qui est une ServletContextListener
, ajoutez une méthode @Bean
à votre classe de configuration:
@Bean
public GravityWebSocketDeployer gravityWebSocketDeployer() {
return new GravityWebSocketDeployer();
}
Spring Boot enregistrera automatiquement toute extension @Bean de HttpServlet;
@Bean
public ServletRegistrationBean axisServletRegistrationBean() {
ServletRegistrationBean registration = new ServletRegistrationBean(new AxisServlet(), "/services/*");
registration.addUrlMappings("*.jws");
return registration;
}