Ajouter un Filtre de Servlet dans un Printemps de Démarrage de l'application
J'aimerais avoir ETag suport. Pour cela, il existe un ShallowEtagHeaderFilter
qui fait tout le travail. Comment puis-je l'ajouter, sans le déclarer dans mon web.xml
(qui en réalité n'existe pas, parce que j'ai un peu eu en passer jusqu'à présent)?
P. S.-je utiliser le Printemps de Démarrage 1.1.4
P. P. S. Voici une solution complète
package cuenation.api;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.ShallowEtagHeaderFilter;
import javax.servlet.DispatcherType;
import java.util.EnumSet;
@Configuration
public class WebConfig {
@Bean
public FilterRegistrationBean shallowEtagHeaderFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new ShallowEtagHeaderFilter());
registration.setDispatcherTypes(EnumSet.allOf(DispatcherType.class));
registration.addUrlPatterns("/cue-categories");
return registration;
}
}
- Uhm, votre question contient un lien vers la solution. Il suffit de faire défiler vers le bas quelques lignes.
- Faites défiler vers le bas quelques lignes où: ici ou dans le ressort de la documentation? Je ne suis pas de vous suivre!
- Oh, je vois ce que tu veux dire. Mais mon problème est que je n'ai pas de configuration xml que ce soit. Voir mon personnalisée d'initialiseur. Ce que je fais mal?
- double question... stackoverflow.com/questions/19825946/...
- comment ajouter ShallowEtagHeaderFilter pour le projet afin qu'il puisse évaluer et de les envoyer Etag pour le navigateur. Faire nous avons besoin de modifier quoi que ce soit?
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation de Spring Boot
Comme mentionné dans la documentation de référence, la seule étape nécessaire est de déclarer que le filtre sous la forme d'un Haricot dans une classe de configuration, c'est ça!
Lors de l'utilisation de Spring MVC
Vous êtes probablement déjà l'extension d'un
WebApplicationInitializer
. Si pas, alors vous devez convertir votre webapp de configuration à partir d'unweb.xml
fichier à unWebApplicationInitializer
classe.Si votre contexte de vie de configuration dans un fichier XML(s), vous pouvez créer une classe qui étend la classe
AbstractDispatcherServletInitializer
- si vous utilisez les classes de configuration,AbstractAnnotationConfigDispatcherServletInitializer
est le bon choix.Dans tous les cas, vous pouvez ensuite ajouter un Filtre d'inscription:
Des exemples complets de basées sur le code de la Servlet container d'initialisation sont disponibles dans le Ressort de la documentation de référence.
WebApplicationInitializer
ni directement, ni indirectement. En fait la seule config que j'ai estapplication.properties
où j'ai mis mes mongodb chaîne de connexion. J'ai essayé d'étendreAbstractAnnotationConfigDispatcherServletInitializer
mais elle nécessite de me mettre en œuvre un ensemble de méthodes.application.properties
dispatcher-config.xml
. Je ne sais pas ce que c'est!WebConfig
de classe à l'intérieur de mon Demande mais TomCat n'a pas commencer à direCould not instantiate bean class [cuenation.api.Application$WebConfig$$EnhancerBySpringCGLIB$$6aed0802]: No default constructor found;
No default constructor
erreur. Êtes-vous prêt à commenter? Voici le lien: stackoverflow.com/questions/36533585/...Un peu en retard de réponse.
Ma solution a été de créer des annotations personnalisées:
Et puis il suffit de l'appliquer au filtre implémentations:
Voir plus:
@AliasFor
, Printemps personnalisé annotations question