Spring框架基础(下)

时间:2019-03-19
本文章向大家介绍Spring框架基础(下),主要包括Spring框架基础(下)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  • Spring整合web项目原理
    • 加载spring核心配置文件
      • 加载spring配置文件时,new对象可以实现功能,但效率低
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("service/service.xml");
      • 解决办法
        • 实现思想
          • 把加载配置文件和创建对象过程,在服务器启动时候完成
        • 实现原理(ServletContext对象、监听器)
          • 在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建
          • 使用监听器(ServletContextListener)监听到ServletContext对象创建时候
            • 加载spring配置文件,把配置文件配置对象创建
            • 把创建出来的对象放到ServletContext域对象里面(setAttribute)
            • 获取对象时候,到ServletContext域得到(getAttribute)
              /**
              * 实现监听器
              */
              public class BaseListener implements ServletContextListener {
                  @Override
                  public void contextInitialized(ServletContextEvent servletContextEvent) {
                      ServletContext servletContext = servletContextEvent.getServletContext();
                      ApplicationContext applicationContext = new ClassPathXmlApplicationContext("service/service.xml");
              
                      servletContext.setAttribute("applicationContext",applicationContext);
                  }
              
                  @Override
                  public void contextDestroyed(ServletContextEvent servletContextEvent) {
              
                  }
              }
              
              
              <!-- 在web.xml配置listener -->
              
                <!-- 配置listener -->
                  <listener>
                      <listener-class>cn.muriel.auto.web.listener.BaseListener</listener-class>
                  </listener>
              
              
              <!-- 测试代码 -->
              <%@ page import="cn.muriel.auto.service.UserService" %>
              <%@ page import="cn.muriel.auto.dao.UserDao" %>
              <%@ page import="org.springframework.context.ApplicationContext" %>
              <%@ page contentType="text/html;charset=UTF-8" language="java" %>
              <html>
              <head>
                  <title>$Title$</title>
              </head>
              <body>
              <%
                  ApplicationContext applicationContext = (ApplicationContext) application.getAttribute("applicationContext");
                  UserService userService = (UserService) applicationContext.getBean("userService");
                  UserDao userDao = (UserDao) applicationContext.getBean("userDao");
                  userService.setUserDao(userDao);
                  userService.addUser();
              %>
              </body>
              </html>