mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-17 16:39:29 +00:00
Extract code snippets from context-hierarchy.adoc
See gh-36175
This commit is contained in:
@@ -22,89 +22,13 @@ The following image shows this relationship:
|
||||
|
||||
image::mvc-context-hierarchy.png[]
|
||||
|
||||
The following example configures a `WebApplicationContext` hierarchy:
|
||||
The following example configures a `WebApplicationContext` hierarchy, and the equivalent `web.xml`:
|
||||
|
||||
[tabs]
|
||||
======
|
||||
Java::
|
||||
+
|
||||
[source,java,indent=0,subs="verbatim,quotes"]
|
||||
----
|
||||
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getRootConfigClasses() {
|
||||
return new Class<?>[] { RootConfig.class };
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getServletConfigClasses() {
|
||||
return new Class<?>[] { App1Config.class };
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String[] getServletMappings() {
|
||||
return new String[] { "/app1/*" };
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
Kotlin::
|
||||
+
|
||||
[source,kotlin,indent=0,subs="verbatim,quotes"]
|
||||
----
|
||||
class MyWebAppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() {
|
||||
|
||||
override fun getRootConfigClasses(): Array<Class<*>> {
|
||||
return arrayOf(RootConfig::class.java)
|
||||
}
|
||||
|
||||
override fun getServletConfigClasses(): Array<Class<*>> {
|
||||
return arrayOf(App1Config::class.java)
|
||||
}
|
||||
|
||||
override fun getServletMappings(): Array<String> {
|
||||
return arrayOf("/app1/*")
|
||||
}
|
||||
}
|
||||
----
|
||||
======
|
||||
include-code::./MyWebAppInitializer[tag=snippet,indent=0]
|
||||
|
||||
TIP: If an application context hierarchy is not required, applications can return all
|
||||
configuration through `getRootConfigClasses()` and `null` from `getServletConfigClasses()`.
|
||||
|
||||
The following example shows the `web.xml` equivalent:
|
||||
|
||||
[source,xml,indent=0,subs="verbatim,quotes"]
|
||||
----
|
||||
<web-app>
|
||||
|
||||
<listener>
|
||||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||
</listener>
|
||||
|
||||
<context-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>/WEB-INF/root-context.xml</param-value>
|
||||
</context-param>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>app1</servlet-name>
|
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
|
||||
<init-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>/WEB-INF/app1-context.xml</param-value>
|
||||
</init-param>
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>app1</servlet-name>
|
||||
<url-pattern>/app1/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
</web-app>
|
||||
----
|
||||
|
||||
TIP: If an application context hierarchy is not required, applications may configure a
|
||||
"`root`" context only and leave the `contextConfigLocation` Servlet parameter empty.
|
||||
|
||||
+4
-6
@@ -18,15 +18,13 @@ package org.springframework.docs.web.webmvc.mvcservlet.mvccontainerconfig;
|
||||
|
||||
import jakarta.servlet.Filter;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
import org.springframework.web.context.support.AbstractDispatcherServletInitializer;
|
||||
import org.springframework.web.filter.CharacterEncodingFilter;
|
||||
import org.springframework.web.filter.HiddenHttpMethodFilter;
|
||||
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
|
||||
|
||||
// tag::snippet[]
|
||||
public class MyFilterDispatcherServletInitializer extends AbstractDispatcherServletInitializer {
|
||||
|
||||
// ...
|
||||
|
||||
@Override
|
||||
protected Filter[] getServletFilters() {
|
||||
return new Filter[] {
|
||||
@@ -36,17 +34,17 @@ public class MyFilterDispatcherServletInitializer extends AbstractDispatcherServ
|
||||
// @fold:on
|
||||
@Override
|
||||
protected WebApplicationContext createServletApplicationContext() {
|
||||
return null;
|
||||
/**/return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String[] getServletMappings() {
|
||||
return new String[] { "/" };
|
||||
/**/return new String[] { "/" };
|
||||
}
|
||||
|
||||
@Override
|
||||
protected WebApplicationContext createRootApplicationContext() {
|
||||
return null;
|
||||
/**/return null;
|
||||
}
|
||||
// @fold:off
|
||||
}
|
||||
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright 2002-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.docs.web.webmvc.mvcservlet.mvcservletcontexthierarchy;
|
||||
|
||||
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
|
||||
|
||||
// tag::snippet[]
|
||||
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getRootConfigClasses() {
|
||||
return new Class<?>[] { RootConfig.class };
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getServletConfigClasses() {
|
||||
return new Class<?>[] { App1Config.class };
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String[] getServletMappings() {
|
||||
return new String[] { "/app1/*" };
|
||||
}
|
||||
}
|
||||
// end::snippet[]
|
||||
|
||||
class RootConfig {}
|
||||
class App1Config {}
|
||||
+4
-6
@@ -18,30 +18,28 @@ package org.springframework.docs.web.webmvc.mvcservlet.mvccontainerconfig
|
||||
|
||||
import jakarta.servlet.Filter
|
||||
import org.springframework.web.context.WebApplicationContext
|
||||
import org.springframework.web.context.support.AbstractDispatcherServletInitializer
|
||||
import org.springframework.web.filter.CharacterEncodingFilter
|
||||
import org.springframework.web.filter.HiddenHttpMethodFilter
|
||||
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer
|
||||
|
||||
// tag::snippet[]
|
||||
class MyFilterDispatcherServletInitializer : AbstractDispatcherServletInitializer() {
|
||||
|
||||
// ...
|
||||
|
||||
override fun getServletFilters(): Array<Filter> {
|
||||
return arrayOf(HiddenHttpMethodFilter(), CharacterEncodingFilter())
|
||||
}
|
||||
|
||||
// @fold:on
|
||||
override fun createServletApplicationContext(): WebApplicationContext {
|
||||
TODO("Not yet implemented")
|
||||
/**/TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun getServletMappings(): Array<String> {
|
||||
return arrayOf("/")
|
||||
/**/TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun createRootApplicationContext(): WebApplicationContext? {
|
||||
return null
|
||||
/**/TODO("Not yet implemented")
|
||||
}
|
||||
// @fold:off
|
||||
}
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright 2002-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.docs.web.webmvc.mvcservlet.mvcservletcontexthierarchy
|
||||
|
||||
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer
|
||||
|
||||
// tag::snippet[]
|
||||
class MyWebAppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() {
|
||||
|
||||
override fun getRootConfigClasses(): Array<Class<*>> {
|
||||
return arrayOf(RootConfig::class.java)
|
||||
}
|
||||
|
||||
override fun getServletConfigClasses(): Array<Class<*>> {
|
||||
return arrayOf(App1Config::class.java)
|
||||
}
|
||||
|
||||
override fun getServletMappings(): Array<String> {
|
||||
return arrayOf("/app1/*")
|
||||
}
|
||||
}
|
||||
// end::snippet[]
|
||||
|
||||
class RootConfig
|
||||
class App1Config
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
<!-- tag::snippet[] -->
|
||||
<web-app>
|
||||
|
||||
<listener>
|
||||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||
</listener>
|
||||
|
||||
<context-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>/WEB-INF/root-context.xml</param-value>
|
||||
</context-param>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>app1</servlet-name>
|
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
|
||||
<init-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>/WEB-INF/app1-context.xml</param-value>
|
||||
</init-param>
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>app1</servlet-name>
|
||||
<url-pattern>/app1/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
</web-app>
|
||||
<!-- end::snippet[] -->
|
||||
Reference in New Issue
Block a user