首先maven配置 导入jar包
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
写一个整合帮助类
import org.springframework.context.ApplicationContext;
import javax.servlet.ServletContext;
/**
* 将spring的上下文整合进tomcat的容器中
*/
public class SpringwebUtil {
public static String SPRING_CONTEXT_KEY="spring-context-key";
public static void setapplicationContext(ApplicationContext applicationContext, ServletContext servletContext){
servletContext.setAttribute(SPRING_CONTEXT_KEY,applicationContext);
}
public static ApplicationContext getApplicationContext(ServletContext servletContext){
return (ApplicationContext) servletContext.getAttribute(SPRING_CONTEXT_KEY);
}
}
使用监听启动
import com.ywj.web.SpringwebUtil;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class SpringloaderListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println(" 初始化 ");
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-context.xml");
SpringwebUtil.setapplicationContext(applicationContext,servletContextEvent.getServletContext());
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
用servlet测试能不能获取到Spring上下文
import org.springframework.context.ApplicationContext;
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 Userservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ApplicationContext applicationContext=SpringwebUtil.getApplicationContext(req.getServletContext());
UserAction userAction = (UserAction) applicationContext.getBean("userAction");
userAction.upload();
}
}
你使用了servlet肯定得去Web.xml配置,监听器也得配置上
<listener>
<listener-class>com.hhh.listener.SpringloaderListener</listener-class>
</listener>
<servlet>
<servlet-name>userservlet</servlet-name>
<servlet-class>com.hhh.web.Userservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userservlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
Spring的配置文件
<bean class="com.hhh.biz.impl.UserBizImpl" name="userBiz"></bean>
<bean class="com.hhh.biz.impl.UserBizImpl2" name="userBiz2"></bean>
<bean class="com.hhh.web.UserAction" name="userAction">
<!--name是com.hhh.web.UserAction里的属性名 ref是容器中的bean-->
<property name="userBiz" ref="userBiz"></property>
</bean>