SpringMVC的应用中,要实现类似的功能,主要是通过实现下面这些接口(任选一,至少一个即可)
一.ApplicationContextAware接口
package org.springframework.context; import org.springframework.beans.BeansException; import org.springframework.beans.factory.Aware; import org.springframework.context.ApplicationContext; public interface ApplicationContextAware extends Aware { void setApplicationContext(ApplicationContext var1) throws BeansException; }
二.ServletContextAware 接口
package org.springframework.web.context; import javax.servlet.ServletContext; import org.springframework.beans.factory.Aware; public interface ServletContextAware extends Aware { void setServletContext(ServletContext var1); }
三.InitializingBean接口
package org.springframework.beans.factory; public interface InitializingBean { void afterPropertiesSet() throws Exception; }
四.ApplicationListener<ApplicationEvent> 接口
package org.springframework.context; import java.util.EventListener; import org.springframework.context.ApplicationEvent; public interface ApplicationListener<E extends ApplicationEvent> extends EventListener { void onApplicationEvent(E var1); }
示例程序:
package com.bijian.study.controller; import javax.servlet.ServletContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; import org.springframework.web.context.ServletContextAware; @Component public class StartupListener implements ApplicationContextAware, ServletContextAware, InitializingBean, ApplicationListener<ContextRefreshedEvent> { private Logger logger = LogManager.getLogger(); @Override public void setApplicationContext(ApplicationContext ctx) throws BeansException { logger.info("1 => StartupListener.setApplicationContext"); } @Override public void setServletContext(ServletContext context) { logger.info("2 => StartupListener.setServletContext"); } @Override public void afterPropertiesSet() throws Exception { logger.info("3 => StartupListener.afterPropertiesSet"); } @Override public void onApplicationEvent(ContextRefreshedEvent evt) { logger.info("4.1 => MyApplicationListener.onApplicationEvent"); if (evt.getApplicationContext().getParent() == null) { logger.info("4.2 => MyApplicationListener.onApplicationEvent"); } } }
服务启动时,输出的顺序如下:
22:54:44.433 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 1 => StartupListener.setApplicationContext 22:54:44.435 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 2 => StartupListener.setServletContext 22:54:44.435 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 3 => StartupListener.afterPropertiesSet 22:54:44.931 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 4.1 => MyApplicationListener.onApplicationEvent 22:54:44.931 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 4.2 => MyApplicationListener.onApplicationEvent
注意:onApplicationEvent方法会触发多次,初始化这种事情,越早越好,建议在setApplicationContext方法中处理,完整示例见附件。
此外还有一种方法:写个BEAN,将要执行的操作写在构造函数里,再将这个类配置到XML里,比如配置到SPRING-MVC.XML里 <bean class="com.test.xx"> 自己的类。不过不推荐使用这种方法。
相关推荐
开发此类系统时,一般会经历以下几个步骤:设计数据库模型,编写SQL脚本;搭建Spring MVC和Mybatis的环境,配置相关XML或Java配置文件;编写控制器处理HTTP请求,调用服务层进行业务逻辑处理;实现DAO接口,与数据库...
Spring MVC 的核心处理流程主要包括以下几个步骤: 1. **请求接收**:客户端发送 HTTP 请求到服务器。 2. **前端控制器**:DispatcherServlet 接收到请求并调用 HandlerMapping。 3. **处理映射**:HandlerMapping ...
doDispatch()方法中包含了几个关键步骤: 1. 通过getHandler()方法获取一个能够处理当前请求的HandlerExecutionChain对象,它封装了具体的Handler(控制器)和相关的拦截器。 2. 通过getHandlerAdapter()方法获取一...
在“spring MVC myeclipse例子”中,我们通常会经历以下几个关键步骤来创建一个简单的Spring MVC项目: 1. **项目初始化**:首先,我们需要在MyEclipse中创建一个新的Dynamic Web Project,然后通过Spring工具集或...
Spring MVC 的配置文件通常包含了以下几个关键部分: 1. **DispatcherServlet 配置**:配置 DispatcherServlet 如何初始化以及加载配置文件。 2. **视图解析器配置**:配置 ViewResolver 来解析视图名到实际的视图...
1. 应用上下文(ApplicationContext)启动时,初始化`MessageSource`。`AbstractApplicationContext`在启动时调用`initMessageSource`方法,这会创建并配置`ResourceBundleMessageSource`实例。 2. 当收到请求时,...
2. `<listener>`:配置了 `ContextLoaderListener` 监听器,该监听器会在应用启动时加载 `contextConfigLocation` 指定的配置文件,初始化 Spring 的根应用上下文。 3. `<servlet>`:定义了一个名为 `spring` 的 ...
1. **配置Spring MVC**:在Web应用的`web.xml`中配置DispatcherServlet,指定其初始化参数,包括Spring MVC的配置文件路径。 2. **编写Controller**:创建一个简单的Java类,使用@Controller注解标记为Spring MVC的...
- **ContextLoaderListener**:负责加载`applicationContext.xml`,确保在应用启动时,Spring容器可以初始化并管理应用中的Bean。 - **CharacterEncodingFilter**:设置全局的字符编码,避免乱码问题。 - **...
2. **启动类**(通常包含@SpringBootApplication注解):这是Spring Boot应用的入口点,负责初始化并运行整个应用。 3. **Spring MVC控制器**:使用@Controller注解的Java类,处理HTTP请求并返回响应。 4. **Spring ...
在Web.xml文件中,我们需要设置几个关键的元素来启动Spring MVC的应用: 1. `<context-param>` 和 `<contextLoaderListener>`:这两个元素用于初始化Spring的ApplicationContext,它会加载指定的配置文件(在这个...
- 配置Web.xml文件,设置DispatcherServlet的初始化参数和监听器,以便加载Spring上下文。 - 编写Controller,处理HTTP请求,并调用Service完成业务逻辑。 5. **项目源码分析**:在压缩包中的项目源码,我们可以...
在"spring mvc 入门Demo"中,我们可以学习到以下几个核心概念和步骤: 1. **配置环境**:首先,我们需要配置Spring MVC的开发环境,包括JDK、Maven或Gradle(构建工具)、IDE(如IntelliJ IDEA或Eclipse)。项目应...
Spring MVC的架构由几个关键组件组成: 1. **DispatcherServlet**:它是所有请求的入口点,负责调度请求到相应的处理器。 2. **Controller**:控制器接收HTTP请求,执行业务逻辑,并返回ModelAndView对象,定义视图...
在 Spring MVC 中有几个重要的组成部分,它们协同工作以完成 Web 请求的处理。 1. **DispatcherServlet**:作为前端控制器,它是整个 Spring MVC 架构的核心。在应用启动时读取配置文件,并初始化上下文。当客户端...
2. **配置Spring MVC**:在web.xml文件中配置DispatcherServlet,指定其初始化参数,包括Spring MVC的配置文件位置。 3. **编写配置文件**:创建一个Spring配置文件(如servlet-context.xml),定义视图解析器、...
在Spring MVC中,我们可以关注以下几个核心组件和知识点进行深入分析: 1.DispatcherServlet:在Spring MVC中,DispatcherServlet是中央调度器,负责接收用户的请求,并根据配置找到合适的控制器来处理请求。在源...
在初始化阶段,它会根据配置加载必要的库和应用模块,如AngularJS本身和其他依赖库。当需要加载新的视图或功能时,RequireJS会动态加载对应的JavaScript文件,确保应用的响应速度和用户体验。 整合过程中,需要注意...
- **初始化阶段**:读取配置文件,初始化`HandlerMapping`、`HandlerAdapter`、`ViewResolver`等组件。 - **运行阶段**:接收HTTP请求,处理并响应。 #### 五、双亲上下文 Spring MVC 支持两种类型的上下文:...