Wie man einen Filter hinzufügen, mit WebMvcConfigurerAdapter im Frühjahr?
Mit WebApplicationInitializer
kann ich einfach einen filter hinzufügen, um die ServletContext
innerhalb der onStartup()
Methode.
Wie man einen filter hinzufügen, mit WebMvcConfigurerAdapter
? Muss ich XML verwenden?
HINZUFÜGEN 1
Anderen zu helfen, zu verstehen, die Feder Web-Konfiguration leichter, ich zeichne in der folgenden Abbildung.
Jetzt müssen Sie nur zuerst verstehen, die rational
hinter Spring-Web-Konfiguration. Und dann Holen die config-Klasse zu Erben und die Methode überschreiben von unten.
Es weniger schmerzhaft ist, um danach zu suchen, als sich daran zu erinnern so viele Dinge.
Und einen guten Artikel auf Spring-Web-Initialisierung:
http://www.kubrynski.com/2014/01/understanding-spring-web-initialization.html
HINZUFÜGEN 2
Basierend auf Tunaki
's Antwort, ich habe die AbstractDispatcherServletInitializer
. Die filter-Registrierung geschieht in den folgenden code:
Sogar ich, überschreiben die grünen getServletFilters()
Methode, die ich immer noch keinen Zugriff auf die Dyanmic
Ergebnis der registerServletFilter()
. Also, wie kann ich konfigurieren Sie den filter, indem Sie addMappingForUrlPatterns()
?
Es scheint, ich have to
überschreiben Sie die ganze registerDispatcherServlet()
Methode.
DispatcherServlet
. Wenn Sie etwas anderes brauchen, überschreiben Sie die onStartup
Methode (vergessen Sie nicht, rufen Sie die super.onStartup
und registrieren der Filter sich selbst, wie Sie normalerweise tun würde. Das funktioniert noch...Oder fügen Sie einfach eine weitere Klasse die
WebApplicationInitializer
... Es können mehrere, es muss nicht ein einziger!.InformationsquelleAutor smwikipedia | 2015-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
WebMvcConfigurer
ist eine Schnittstelle, die verwendet wird, um das anpassen des Java-basierte Konfiguration für Spring MVC aktiviert über@EnableWebMvc
.WebMvcConfigurerAdapter
ist nur ein adapter mit leeren Standard-Methoden für diese Schnittstelle.Es nicht konfiguriert
DispatcherServlet
, welche Filter verwendet werden. Als solche können Sie nicht verwendenWebMvcConfigurer
zu konfigurieren servlet-Filter.Leicht zu konfigurieren Filter können Sie Erben von
AbstractDispatcherServletInitializer
und überschreibengetServletFilters()
:Wenn Sie wollen weiter einen filter einstellen, müssen Sie das überschreiben
onStartup
statt:AbstractDispatcherServletInitialier
, wie bekomme ich dieFilterRegisteration
- Objekt, damit ich anrufen kannaddMappingForUrlPatterns()
?Meine Add1 ist nur für Referenz. Meine Add2 ist relevant für die Frage über das hinzufügen eines filters. Sie können Sie ignorieren meine 1 Hinzufügen.
Siehe mein edit.
AbstractDispatcherServletInitializer erfordert auch createServletApplicationContext, getServletMappings und createRootApplicationContext umgesetzt werden und der filter dont zu sein scheinen angewendet.
InformationsquelleAutor Tunaki
Können Sie den Zugriff auf die Dyanmic Ergebnis der
registerServletFilter()
wie folgt in Ihrem app-config (insbesondere WebApplicationInitializer):InformationsquelleAutor Psypher
Können Sie erstellen, spring beans implementiert, dass Filter und @Inject ServletContext in Ihnen.
Dann in einer @PostConstruct Methode, können Sie Sie registrieren mit servletContext.addServlet("meinfilter",this);
Die Bohne muss nicht deklariert werden in den rootContext, initialisiert mit ContextLoaderListener(rootContext), da die servlet 3.0 api verbietet die Verwendung von dynamischen Registrierung für die Zuhörer.
Es muss also erklärt werden, in der dispatcherContext, das DispatcherServlet(dispatcherContext )
Frühjahr doc
InformationsquelleAutor Mirak