`

Spring MVC启动时初始化的几个常用方法

阅读更多

        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"> 自己的类。不过不推荐使用这种方法。

 

文章来源:http://www.cnblogs.com/xiohao/p/5279581.html

参考文章:http://blog.csdn.net/axwolfer/article/details/40718609

分享到:
评论

相关推荐

    Spring MVC + Mybatis+Spring实现的个人博客系统

    开发此类系统时,一般会经历以下几个步骤:设计数据库模型,编写SQL脚本;搭建Spring MVC和Mybatis的环境,配置相关XML或Java配置文件;编写控制器处理HTTP请求,调用服务层进行业务逻辑处理;实现DAO接口,与数据库...

    spring mvc

    Spring MVC 的核心处理流程主要包括以下几个步骤: 1. **请求接收**:客户端发送 HTTP 请求到服务器。 2. **前端控制器**:DispatcherServlet 接收到请求并调用 HandlerMapping。 3. **处理映射**:HandlerMapping ...

    Spring MVC源码深度剖析开源架构源码2021.pdf

    doDispatch()方法中包含了几个关键步骤: 1. 通过getHandler()方法获取一个能够处理当前请求的HandlerExecutionChain对象,它封装了具体的Handler(控制器)和相关的拦截器。 2. 通过getHandlerAdapter()方法获取一...

    spring MVC myeclipse例子

    在“spring MVC myeclipse例子”中,我们通常会经历以下几个关键步骤来创建一个简单的Spring MVC项目: 1. **项目初始化**:首先,我们需要在MyEclipse中创建一个新的Dynamic Web Project,然后通过Spring工具集或...

    spring mvc过程详解

    Spring MVC 的配置文件通常包含了以下几个关键部分: 1. **DispatcherServlet 配置**:配置 DispatcherServlet 如何初始化以及加载配置文件。 2. **视图解析器配置**:配置 ViewResolver 来解析视图名到实际的视图...

    10 扩展之Spring MVC中如何实现国际化i18n慕课专栏1

    1. 应用上下文(ApplicationContext)启动时,初始化`MessageSource`。`AbstractApplicationContext`在启动时调用`initMessageSource`方法,这会创建并配置`ResourceBundleMessageSource`实例。 2. 当收到请求时,...

    spring mvc注解实例

    2. `&lt;listener&gt;`:配置了 `ContextLoaderListener` 监听器,该监听器会在应用启动时加载 `contextConfigLocation` 指定的配置文件,初始化 Spring 的根应用上下文。 3. `&lt;servlet&gt;`:定义了一个名为 `spring` 的 ...

    Spring MVC Helloworld实例

    1. **配置Spring MVC**:在Web应用的`web.xml`中配置DispatcherServlet,指定其初始化参数,包括Spring MVC的配置文件路径。 2. **编写Controller**:创建一个简单的Java类,使用@Controller注解标记为Spring MVC的...

    Spring MVC 入门教程

    - **ContextLoaderListener**:负责加载`applicationContext.xml`,确保在应用启动时,Spring容器可以初始化并管理应用中的Bean。 - **CharacterEncodingFilter**:设置全局的字符编码,避免乱码问题。 - **...

    spring mvc-spring boot-spring data

    2. **启动类**(通常包含@SpringBootApplication注解):这是Spring Boot应用的入口点,负责初始化并运行整个应用。 3. **Spring MVC控制器**:使用@Controller注解的Java类,处理HTTP请求并返回响应。 4. **Spring ...

    基于注解的spring mvc

    在Web.xml文件中,我们需要设置几个关键的元素来启动Spring MVC的应用: 1. `&lt;context-param&gt;` 和 `&lt;contextLoaderListener&gt;`:这两个元素用于初始化Spring的ApplicationContext,它会加载指定的配置文件(在这个...

    Spring mvc + Spring + Spring jdbc 整合 demo.rar

    - 配置Web.xml文件,设置DispatcherServlet的初始化参数和监听器,以便加载Spring上下文。 - 编写Controller,处理HTTP请求,并调用Service完成业务逻辑。 5. **项目源码分析**:在压缩包中的项目源码,我们可以...

    spring mvc 入门Demo

    在"spring mvc 入门Demo"中,我们可以学习到以下几个核心概念和步骤: 1. **配置环境**:首先,我们需要配置Spring MVC的开发环境,包括JDK、Maven或Gradle(构建工具)、IDE(如IntelliJ IDEA或Eclipse)。项目应...

    spring mvc demo 详细说明

    Spring MVC的架构由几个关键组件组成: 1. **DispatcherServlet**:它是所有请求的入口点,负责调度请求到相应的处理器。 2. **Controller**:控制器接收HTTP请求,执行业务逻辑,并返回ModelAndView对象,定义视图...

    spring mvc学习笔记

    在 Spring MVC 中有几个重要的组成部分,它们协同工作以完成 Web 请求的处理。 1. **DispatcherServlet**:作为前端控制器,它是整个 Spring MVC 架构的核心。在应用启动时读取配置文件,并初始化上下文。当客户端...

    Spring Mvc框架

    2. **配置Spring MVC**:在web.xml文件中配置DispatcherServlet,指定其初始化参数,包括Spring MVC的配置文件位置。 3. **编写配置文件**:创建一个Spring配置文件(如servlet-context.xml),定义视图解析器、...

    看透Spring MVC源代码分析与实践

    在Spring MVC中,我们可以关注以下几个核心组件和知识点进行深入分析: 1.DispatcherServlet:在Spring MVC中,DispatcherServlet是中央调度器,负责接收用户的请求,并根据配置找到合适的控制器来处理请求。在源...

    spring-mvc-showcase-case1-client

    在初始化阶段,它会根据配置加载必要的库和应用模块,如AngularJS本身和其他依赖库。当需要加载新的视图或功能时,RequireJS会动态加载对应的JavaScript文件,确保应用的响应速度和用户体验。 整合过程中,需要注意...

    spring mvc 快速入门深入分析

    - **初始化阶段**:读取配置文件,初始化`HandlerMapping`、`HandlerAdapter`、`ViewResolver`等组件。 - **运行阶段**:接收HTTP请求,处理并响应。 #### 五、双亲上下文 Spring MVC 支持两种类型的上下文:...

Global site tag (gtag.js) - Google Analytics