Spring Web Contexts (BAEL-82) (#2113)
* spring web contexts example * applicationContext util added * java based configuration added * bean name fixed
This commit is contained in:
		
							parent
							
								
									806c17b41b
								
							
						
					
					
						commit
						d2880044df
					
				
							
								
								
									
										19
									
								
								spring-all/src/main/java/com/baeldung/contexts/Greeting.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								spring-all/src/main/java/com/baeldung/contexts/Greeting.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| package com.baeldung.contexts; | ||||
| 
 | ||||
| public class Greeting { | ||||
|      | ||||
|     private String message; | ||||
| 
 | ||||
|     public String getMessage() { | ||||
|         return message; | ||||
|     } | ||||
| 
 | ||||
|     public void setMessage(String message) { | ||||
|         this.message = message; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "Greeting [message=" + message + "]"; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,35 @@ | ||||
| package com.baeldung.contexts.config; | ||||
| 
 | ||||
| import javax.servlet.ServletContext; | ||||
| import javax.servlet.ServletException; | ||||
| import javax.servlet.ServletRegistration; | ||||
| 
 | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.web.WebApplicationInitializer; | ||||
| import org.springframework.web.context.ContextLoaderListener; | ||||
| import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; | ||||
| import org.springframework.web.servlet.DispatcherServlet; | ||||
| 
 | ||||
| @Configuration | ||||
| public class ApplicationInitializer implements WebApplicationInitializer { | ||||
| 
 | ||||
|     @Override | ||||
|     public void onStartup(ServletContext servletContext) throws ServletException { | ||||
|         AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); | ||||
|         rootContext.register(RootApplicationConfig.class); | ||||
|         servletContext.addListener(new ContextLoaderListener(rootContext)); | ||||
|          | ||||
|         AnnotationConfigWebApplicationContext normalWebAppContext = new AnnotationConfigWebApplicationContext(); | ||||
|         normalWebAppContext.register(NormalWebAppConfig.class); | ||||
|         ServletRegistration.Dynamic normal = servletContext.addServlet("normal-webapp", new DispatcherServlet(normalWebAppContext)); | ||||
|         normal.setLoadOnStartup(1); | ||||
|         normal.addMapping("/api/*"); | ||||
|          | ||||
|         AnnotationConfigWebApplicationContext secureWebAppContext = new AnnotationConfigWebApplicationContext(); | ||||
|         secureWebAppContext.register(SecureWebAppConfig.class); | ||||
|         ServletRegistration.Dynamic secure = servletContext.addServlet("secure-webapp", new DispatcherServlet(secureWebAppContext)); | ||||
|         secure.setLoadOnStartup(1); | ||||
|         secure.addMapping("/s/api/*"); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,25 @@ | ||||
| package com.baeldung.contexts.config; | ||||
| 
 | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.web.servlet.ViewResolver; | ||||
| import org.springframework.web.servlet.config.annotation.EnableWebMvc; | ||||
| import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; | ||||
| import org.springframework.web.servlet.view.InternalResourceViewResolver; | ||||
| import org.springframework.web.servlet.view.JstlView; | ||||
| 
 | ||||
| @Configuration | ||||
| @EnableWebMvc | ||||
| @ComponentScan(basePackages = { "com.baeldung.contexts.normal" }) | ||||
| public class NormalWebAppConfig extends WebMvcConfigurerAdapter { | ||||
| 
 | ||||
|     @Bean | ||||
|     public ViewResolver viewResolver() { | ||||
|         InternalResourceViewResolver resolver = new InternalResourceViewResolver(); | ||||
|         resolver.setPrefix("/WEB-INF/view/"); | ||||
|         resolver.setSuffix(".jsp"); | ||||
|         resolver.setViewClass(JstlView.class); | ||||
|         return resolver; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,19 @@ | ||||
| package com.baeldung.contexts.config; | ||||
| 
 | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| 
 | ||||
| import com.baeldung.contexts.Greeting; | ||||
| 
 | ||||
| @Configuration | ||||
| @ComponentScan(basePackages = { "com.baeldung.contexts.services" }) | ||||
| public class RootApplicationConfig { | ||||
| 
 | ||||
|     @Bean | ||||
|     public Greeting greeting() { | ||||
|         Greeting greeting = new Greeting(); | ||||
|         greeting.setMessage("Hello World !!"); | ||||
|         return greeting; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,25 @@ | ||||
| package com.baeldung.contexts.config; | ||||
| 
 | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.ComponentScan; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.web.servlet.ViewResolver; | ||||
| import org.springframework.web.servlet.config.annotation.EnableWebMvc; | ||||
| import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; | ||||
| import org.springframework.web.servlet.view.InternalResourceViewResolver; | ||||
| import org.springframework.web.servlet.view.JstlView; | ||||
| 
 | ||||
| @Configuration | ||||
| @EnableWebMvc | ||||
| @ComponentScan(basePackages = { "com.baeldung.contexts.secure" }) | ||||
| public class SecureWebAppConfig extends WebMvcConfigurerAdapter { | ||||
|          | ||||
|     @Bean | ||||
|     public ViewResolver viewResolver() { | ||||
|         InternalResourceViewResolver resolver = new InternalResourceViewResolver(); | ||||
|         resolver.setPrefix("/WEB-INF/secure/view/"); | ||||
|         resolver.setSuffix(".jsp"); | ||||
|         resolver.setViewClass(JstlView.class); | ||||
|         return resolver; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,41 @@ | ||||
| package com.baeldung.contexts.normal; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| 
 | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Qualifier; | ||||
| import org.springframework.stereotype.Controller; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.context.ContextLoader; | ||||
| import org.springframework.web.context.WebApplicationContext; | ||||
| import org.springframework.web.servlet.ModelAndView; | ||||
| 
 | ||||
| import com.baeldung.contexts.services.ApplicationContextUtilService; | ||||
| import com.baeldung.contexts.services.GreeterService; | ||||
| 
 | ||||
| @Controller | ||||
| public class HelloWorldController { | ||||
| 
 | ||||
|     @Autowired | ||||
|     WebApplicationContext webApplicationContext; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private GreeterService greeterService; | ||||
|      | ||||
|     private void processContext() { | ||||
|         WebApplicationContext rootContext = ContextLoader.getCurrentWebApplicationContext(); | ||||
|          | ||||
|         System.out.println("root context : " + rootContext); | ||||
|         System.out.println("root context Beans: " + Arrays.asList(rootContext.getBeanDefinitionNames())); | ||||
| 
 | ||||
|         System.out.println("context : " + webApplicationContext); | ||||
|         System.out.println("context Beans: " + Arrays.asList(webApplicationContext.getBeanDefinitionNames())); | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping(path = "/welcome") | ||||
|     public ModelAndView helloWorld() { | ||||
|         processContext(); | ||||
|         String message = "<br><div style='text-align:center;'>" + "<h3> " + greeterService.greet() + "</h3></div>"; | ||||
|         return new ModelAndView("welcome", "message", message); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,49 @@ | ||||
| package com.baeldung.contexts.secure; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| 
 | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Qualifier; | ||||
| import org.springframework.context.ApplicationContext; | ||||
| import org.springframework.stereotype.Controller; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.context.ContextLoader; | ||||
| import org.springframework.web.context.WebApplicationContext; | ||||
| import org.springframework.web.servlet.ModelAndView; | ||||
| 
 | ||||
| import com.baeldung.contexts.services.ApplicationContextUtilService; | ||||
| import com.baeldung.contexts.services.GreeterService; | ||||
| 
 | ||||
| @Controller | ||||
| public class HelloWorldSecureController { | ||||
| 
 | ||||
|     @Autowired | ||||
|     WebApplicationContext webApplicationContext; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private GreeterService greeterService; | ||||
|      | ||||
|     @Autowired | ||||
|     @Qualifier("contextAware") | ||||
|     private ApplicationContextUtilService contextUtilService;  | ||||
| 
 | ||||
|     private void processContext() { | ||||
|         ApplicationContext context = contextUtilService.getApplicationContext(); | ||||
|         System.out.println("application context : " + context); | ||||
|         System.out.println("application context Beans: " + Arrays.asList(context.getBeanDefinitionNames())); | ||||
|          | ||||
|         WebApplicationContext rootContext = ContextLoader.getCurrentWebApplicationContext(); | ||||
|         System.out.println("context : " + rootContext); | ||||
|         System.out.println("context Beans: " + Arrays.asList(rootContext.getBeanDefinitionNames())); | ||||
| 
 | ||||
|         System.out.println("context : " + webApplicationContext); | ||||
|         System.out.println("context Beans: " + Arrays.asList(webApplicationContext.getBeanDefinitionNames())); | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping(path = "/welcome") | ||||
|     public ModelAndView helloWorld() { | ||||
|         processContext(); | ||||
|         String message = "<br><div style='text-align:center;'>" + "<h3> " + greeterService.greet() + "</h3></div>"; | ||||
|         return new ModelAndView("welcome", "message", message); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,21 @@ | ||||
| package com.baeldung.contexts.services; | ||||
| 
 | ||||
| import org.springframework.beans.BeansException; | ||||
| import org.springframework.context.ApplicationContext; | ||||
| import org.springframework.context.ApplicationContextAware; | ||||
| import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| @Service(value="contextAware") | ||||
| public class ApplicationContextUtilService implements ApplicationContextAware { | ||||
|      | ||||
|     private ApplicationContext applicationContext; | ||||
|      | ||||
|     @Override | ||||
|     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { | ||||
|         this.applicationContext = applicationContext; | ||||
|     } | ||||
| 
 | ||||
|     public ApplicationContext getApplicationContext() { | ||||
|         return applicationContext; | ||||
|     }     | ||||
| } | ||||
| @ -0,0 +1,19 @@ | ||||
| package com.baeldung.contexts.services; | ||||
| 
 | ||||
| import javax.annotation.Resource; | ||||
| 
 | ||||
| import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| import com.baeldung.contexts.Greeting; | ||||
| 
 | ||||
| @Service | ||||
| public class GreeterService { | ||||
|      | ||||
|     @Resource | ||||
|     private Greeting greeting; | ||||
|      | ||||
|     public String greet(){ | ||||
|         return greeting.getMessage(); | ||||
|     } | ||||
|      | ||||
| } | ||||
							
								
								
									
										5
									
								
								spring-all/src/main/webapp/WEB-INF/index.jsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								spring-all/src/main/webapp/WEB-INF/index.jsp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| <html> | ||||
| <body> | ||||
| <h2>Hello World!</h2> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										19
									
								
								spring-all/src/main/webapp/WEB-INF/normal-webapp-servlet.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								spring-all/src/main/webapp/WEB-INF/normal-webapp-servlet.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| <beans xmlns="http://www.springframework.org/schema/beans" | ||||
| 	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" | ||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
| 	xsi:schemaLocation=" | ||||
|         http://www.springframework.org/schema/beans      | ||||
|         http://www.springframework.org/schema/beans/spring-beans.xsd | ||||
|         http://www.springframework.org/schema/mvc  | ||||
|         http://www.springframework.org/schema/mvc/spring-mvc.xsd | ||||
|         http://www.springframework.org/schema/context  | ||||
|         http://www.springframework.org/schema/context/spring-context.xsd"> | ||||
| 
 | ||||
| 	<context:component-scan base-package="com.baeldung.contexts.normal" /> | ||||
| 
 | ||||
| 	<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> | ||||
| 		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> | ||||
| 		<property name="prefix" value="/WEB-INF/view/" /> | ||||
| 		<property name="suffix" value=".jsp" /> | ||||
| 	</bean> | ||||
| </beans> | ||||
| @ -0,0 +1,16 @@ | ||||
| <?xml version = "1.0" encoding = "UTF-8"?> | ||||
| 
 | ||||
| <beans xmlns="http://www.springframework.org/schema/beans" | ||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  | ||||
| 	xmlns:context="http://www.springframework.org/schema/context" | ||||
| 	xsi:schemaLocation="http://www.springframework.org/schema/beans | ||||
|    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd | ||||
|    http://www.springframework.org/schema/context | ||||
|    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> | ||||
| 
 | ||||
| 	<context:component-scan base-package="com.baeldung.contexts.services" /> | ||||
| 	 | ||||
| 	<bean id="greeting" class="ccom.baeldung.contexts.Greeting"> | ||||
| 		<property name="message" value="Hello World !!" /> | ||||
| 	</bean> | ||||
| </beans> | ||||
							
								
								
									
										19
									
								
								spring-all/src/main/webapp/WEB-INF/secure-webapp-servlet.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								spring-all/src/main/webapp/WEB-INF/secure-webapp-servlet.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| <beans xmlns="http://www.springframework.org/schema/beans" | ||||
| 	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" | ||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
| 	xsi:schemaLocation=" | ||||
|         http://www.springframework.org/schema/beans      | ||||
|         http://www.springframework.org/schema/beans/spring-beans.xsd | ||||
|         http://www.springframework.org/schema/mvc  | ||||
|         http://www.springframework.org/schema/mvc/spring-mvc.xsd | ||||
|         http://www.springframework.org/schema/context  | ||||
|         http://www.springframework.org/schema/context/spring-context.xsd"> | ||||
| 
 | ||||
| 	<context:component-scan base-package="com.baeldung.contexts.secure" /> | ||||
| 
 | ||||
| 	<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> | ||||
| 		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> | ||||
| 		<property name="prefix" value="/WEB-INF/secure/view/" /> | ||||
| 		<property name="suffix" value=".jsp" /> | ||||
| 	</bean> | ||||
| </beans> | ||||
							
								
								
									
										11
									
								
								spring-all/src/main/webapp/WEB-INF/secure/view/welcome.jsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								spring-all/src/main/webapp/WEB-INF/secure/view/welcome.jsp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| <html> | ||||
| <head> | ||||
| 	<title>Spring Web Contexts</title> | ||||
| </head> | ||||
| <body> | ||||
| 	<br> | ||||
| 	<div style="padding: 10px; border-radius: 10px; font-size: 30px; text-align: center;"> | ||||
| 		Secure Web Application : ${message} | ||||
| 	</div> | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										11
									
								
								spring-all/src/main/webapp/WEB-INF/view/welcome.jsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								spring-all/src/main/webapp/WEB-INF/view/welcome.jsp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| <html> | ||||
| <head> | ||||
| 	<title>Spring Web Contexts</title> | ||||
| </head> | ||||
| <body> | ||||
| 	<br> | ||||
| 	<div style="padding: 10px; border-radius: 10px; font-size: 30px; text-align: center;"> | ||||
| 		Normal Web Application : ${message} | ||||
| 	</div> | ||||
| </body> | ||||
| </html> | ||||
| @ -3,7 +3,48 @@ | ||||
|         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" | ||||
|         version="3.0"> | ||||
| 
 | ||||
| 	 | ||||
| 	 <!-- load root application context --> | ||||
|   	<context-param> | ||||
|     	<param-name>contextConfigLocation</param-name> | ||||
|     	<param-value>/WEB-INF/rootApplicationContext.xml</param-value> | ||||
| 	</context-param> | ||||
| 	<listener> | ||||
|    		<listener-class> | ||||
|         	org.springframework.web.context.ContextLoaderListener | ||||
|    		</listener-class> | ||||
| 	</listener>  | ||||
| 	 | ||||
| 	<!-- secure web app context --> | ||||
|     <servlet> | ||||
|         <servlet-name>secure-webapp</servlet-name> | ||||
|         	<servlet-class> | ||||
|             	org.springframework.web.servlet.DispatcherServlet | ||||
|         	</servlet-class> | ||||
| 		    <load-on-startup>1</load-on-startup> | ||||
| 			<init-param> | ||||
| 				<param-name>contextConfigLocation</param-name> | ||||
| 				<param-value>/WEB-INF/secure-webapp-servlet.xml</param-value> | ||||
| 			</init-param> | ||||
|     </servlet> | ||||
|     <servlet-mapping> | ||||
|         <servlet-name>secure-webapp</servlet-name> | ||||
|         <url-pattern>/s/api/*</url-pattern> | ||||
|     </servlet-mapping> | ||||
|      | ||||
|     <!-- normal web app context --> | ||||
|     <servlet> | ||||
|         <servlet-name>normal-webapp</servlet-name> | ||||
|         <servlet-class> | ||||
|             org.springframework.web.servlet.DispatcherServlet | ||||
|         </servlet-class> | ||||
|         <load-on-startup>1</load-on-startup> | ||||
|     </servlet> | ||||
|     <servlet-mapping> | ||||
|         <servlet-name>normal-webapp</servlet-name> | ||||
|         <url-pattern>/api/*</url-pattern> | ||||
|     </servlet-mapping> | ||||
| 	 | ||||
|     <servlet> | ||||
|         <servlet-name>test-mvc</servlet-name> | ||||
|         <servlet-class> | ||||
|  | ||||
							
								
								
									
										5
									
								
								spring-all/src/main/webapp/index.jsp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								spring-all/src/main/webapp/index.jsp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| <html> | ||||
| <body> | ||||
| <h2>Hello World!</h2> | ||||
| </body> | ||||
| </html> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user