- 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>
- 实现思想
-
- 加载spring核心配置文件
Spring框架基础(下)
猜你喜欢
转载自www.cnblogs.com/fatRabbit-/p/10556275.html
今日推荐
周排行