In web application ApplicationContext is created using Context Loaders. there are two implementations of context loader.
ContextLoaderListener : It is listener implementation that is added to web.xml file.
ContextLoaderServlet : It is servlet implementation that is configured with load-on-startup tag in web.xml.
ContextLoaderListener is simple way to use the spring in web application. this listener accept contextConfigLocation parameter from context-parama.
You have to enter following code in web.xml file
define contextConfigLocation parameter in context-param tag.
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/services.xml</param-value> </context-param>
services.xml is the Spring configuration file in which you define beans.
Add the ContextLoaderListener listener.
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
Here is the complete source code for the example demonstrating this.
InputService.java
package com.techartifact.example.spring.service; import java.util.Random; import java.util.Scanner; public class InputService { public int getIntValue() { Random r=new Random(); int val=r.nextInt(); System.out.println("Returning value = "+val); return val; } }
OutputService.java
package com.techartifact.example.spring.service; public class OutputService{ public int write(int x) { System.out.println("Output is "+x); return x; } }
CalServlet .java
package com.techartifact.example.spring.servlets; import com.techartifact.example.spring.service.CalcMachine; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class CalServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); CalcMachine cal = (CalcMachine) ac.getBean("cal"); response.getWriter().print("Adding of numbers is = " + cal.doAdd()); response.getWriter().close(); } }
services.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" 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-3.0.xsd"> <bean id="in" class="com.techartifact.example.spring.service.InputService"/> <bean id="out" class="com.techartifact.example.spring.service.OutputService"/> <bean id="cal" class="com.techartifact.example.spring.service.CalcMachine"> <property name="inputService"> <ref bean="in" /> </property> <property name="outputService"> <ref bean="out" /> </property> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>DI2_web</display-name> <servlet> <description></description> <display-name>CalServlet</display-name> <servlet-name>CalServlet</servlet-name> <servlet-class>com.techartifact.example.spring.servlets.CalServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CalServlet</servlet-name> <url-pattern>/CalServlet</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/services.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
Run example
Download full example code from here spring-webapplication
Go to project directory [spring-webapplication] in command shell and run following command using maven
mvn clean package mvn -Pcargo-run