`

核心配置文件入口类的执行顺序

阅读更多

核心配置文件入口类的执行顺序

该类实现了两个接口:ApplicationListener<ContextRefreshedEvent>,ServletContextAware

执行顺序如下:

(1)依赖资源的注入

比如使用注解@Resource的setter方法

(2)实现接口ServletContextAware的setServletContext 方法

(3)onApplicationEvent方法

 

核心配置类如下:

package com.xx.config;


import com.xxx.util.SpringMVCUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.web.context.ServletContextAware;

import javax.annotation.Resource;
import javax.servlet.ServletContext;

/**
 * Created by 黄威 on 9/19/16.<br >
 *     读取配置文件的核心类,是获取properties参数的唯一入口<br >
 *         执行顺序<br>
 */
@Configuration
public class EnvironmentBean implements ApplicationListener<ContextRefreshedEvent>,ServletContextAware {
    @Autowired
    ConfigurableEnvironment env;
    private MutablePropertySources sources;
    private ServletContext servletContext;

    public String getProperty(String key) {
        if(env.containsProperty(key)){
            return env.getProperty(key);
        }
        return null;
    }
    /***
     * Spring容器加载完成触发,可用于初始化环境,准备测试数据、加载一些数据到内存
     * @param contextRefreshedEvent
     */
    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        System.out.println("add Sources to env ...");
        SpringMVCUtil.addCustomPropertySources(this.sources, env);
        System.out.println("add Sources to env completely");
        API.init(this);
        Const.init(this);
        
    }
    public MutablePropertySources getSources() {
        return sources;
    }

    @Resource
    public void setSources(MutablePropertySources sources2) {
        System.out.println("setSources");
        this.sources = sources2;
    }

    @Override
    public void setServletContext(ServletContext servletContext) {
        this.servletContext=servletContext;
        System.out.println("setServletContext");
        this.servletContext.setAttribute("passporttest", "www.abc.com");
    }
}

 

分享到:
评论

相关推荐

    图解DataX执行流程.pdf

    DataX的执行流程从加载配置文件开始。配置文件中包含了Job、Plugin、Core的配置信息。ConfigurationParser解析Job、Plugin、Core配置文件,读取用户配置的json文件,转换为内部的Configuration配置,并打印相关信息...

    MFC的运行顺序

    3. **进入WinMain函数**:`WinMain()`函数是MFC应用程序的入口点,它实际上是由MFC框架提供的,位于`WINMAIN.CPP`文件中。该函数的实现是: ```cpp int _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, ...

    Tomcat启动顺序

    Bootstrap类加载器完成后,Tomcat会使用系统类加载器(System ClassLoader)加载服务器的全局配置文件,如`server.xml`。这个文件定义了Tomcat的整体架构,包括服务(Service)、连接器(Connector)和引擎(Engine)等组件...

    python入门教程-28-程序入口文件功能实现.ev4.rar

    2. **控制流程**:入口文件定义了程序的执行顺序。它调用其他模块和函数,控制整个程序的流程。例如,启动一个Web服务器、运行批处理任务或者执行主业务逻辑。 3. **命令行参数处理**:在Python中,我们可以使用`...

    spring security 配置文件小结(逐步深化到url级别)

    在本文中,我们将深入探讨Spring Security的配置文件小结,逐步深化到URL级别的保护。 首先,我们需要理解Spring Security的核心组件。这些包括`WebSecurityConfigurerAdapter`,这是自定义安全配置的主要入口点;`...

    sruts2.0 web.xml 配置文件

    `web.xml`配置文件在Struts2中扮演着至关重要的角色,它是整个应用的部署描述符,定义了应用程序的入口点、过滤器、Servlet以及其他Web组件的配置信息。在这里,我们将深入探讨`web.xml`配置文件在Struts2中的应用...

    了解MVC应用程序执行过程

    - `Global.asax`文件中定义了路由配置,在第一次请求时会被加载。 - `RouteTable`对象用于存储所有已注册的路由信息。 - `RouteData`对象包含了路由匹配后的参数信息。 - `RequestContext`对象封装了请求上下文...

    shiro管理多登录入口配置,手机端登录与网页端登录

    - 在 Shiro 的 XML 配置文件中,需要定义这两个 Realm 和过滤器,并将它们添加到安全链中。配置应包括 Realm 的数据源、过滤器的执行顺序以及登录失败后的处理逻辑。 以下是一个简化版的 XML 配置示例: ```xml ...

    Thinkphp框架执行流程图.pdf

    11. 加载当前应用模式定义的核心文件(例如普通模式下是ThinkPHP/Mode/common.php),这通常包括核心配置文件和其他重要的模块文件。 12. 加载惯例配置文件(例如ThinkPHP/Conf/convention.php),这些配置文件包含...

    iBATIS框架主要的类层次结构.pdf

    iBATIS的核心竞争力在于其SqlMap配置文件,它包含`Statement`语句,如CRUD操作。通过解析配置文件,iBATIS生成`ParameterMap`和`ResultMap`对象,分别用于处理输入参数和SQL执行结果。`Statement`类结构图展示了这些...

    Struts2(一)

    - 动作类的搜索顺序遵循一定的规则,通常情况下,Struts2会根据配置文件中的顺序来查找对应的动作类。 通过以上内容,我们可以了解到Struts2作为一个成熟的MVC框架,在项目开发中扮演的重要角色。从环境搭建到第一...

    工业40,qcadoo开源MES的几个配置档

    在qcadoo MES系统中,web.xml定义了应用程序的启动顺序、URL映射、安全设置等,它是Spring MVC或者Struts等MVC框架的入口点,决定了Web应用的基本行为。 3. **root-context.xml**: 这是Spring框架的应用上下文配置...

    Struts2框架的工作原理与架构分析.pptx

    6. **Configuration Manager**:ActionProxy通过Configuration Manager查询配置文件(通常是struts.xml),找到需要执行的Action类。 7. **ActionInvocation**:ActionProxy创建一个ActionInvocation实例,这个实例...

    Strut2 学习总结(1)基本配置

    Struts2的核心配置文件是`struts.xml`,这是应用的入口点,用于定义Action、结果类型、包等元素。在配置文件中,我们通常会看到如下内容: ```xml &lt;result name="success"&gt;/success.jsp ``` 上述配置...

    webpack配置配置介绍和操作指引

    Webpack 的核心配置文件通常命名为 `webpack.config.js`,这是一个 JavaScript 对象,包含各种配置项。 ```javascript module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, '...

    spring、springmvc、mybatis相结合的ssm框架整合实战及项目文件和原理解析

    在项目中,通常会有一个`applicationContext.xml`配置文件,定义Bean的实例化和装配规则。例如,定义数据库连接池、数据源、事务管理器等。此外,Spring还负责管理Service和DAO层的Bean,通过扫描特定包下的类并自动...

    Struts2的配置

    1. **核心配置**:Struts2的核心配置通常在`struts.xml`文件中进行,这是框架的入口点。这个文件定义了Action、包、拦截器和结果等元素。例如,你可以设置默认的拦截器栈,以及全局结果类型,这些配置对整个应用生效...

    web.xml详细配置说明

    【web.xml】是Java Web应用程序的核心配置文件,用于定义应用的结构、行为和运行时环境。它是基于XML的,遵循特定的语法规则和元素顺序。以下是对web.xml配置文件中各个元素的详细说明: 1. **定义头和根元素** - ...

    Yii教案素材整理

    执行顺序从配置常量开始,接着是注册Composer自动加载器,包含Yii核心类文件以及加载应用配置。之后,通过实例化应用配置并调用run方法来创建、配置和运行应用。此外,还介绍了Yii框架入口的位置以及应用主体的概念...

Global site tag (gtag.js) - Google Analytics