文档章节

springboot的事件机制

OSC屠夫
 OSC屠夫
发布于 2016/09/30 11:29
字数 278
阅读 208
收藏 1

#Applicantion Event种类 输入图片说明

所有的Event都继承SpringApplicationEvent

输入图片说明

##ApplicationEnvironmentPreparedEvent

监听ApplicationEnvironmentPreparedEvent的事件

spring boot正在启动中环境变量注入和修改之前,在这时候可以修改application的内容

public class EnvPreListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>{
    private  final Logger logger = LoggerFactory.getLogger(EnvPreListener.class);
    @Override
    public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
        ConfigurableEnvironment env = event.getEnvironment();
        SpringApplication app = event.getSpringApplication();
        app.setBannerMode(Banner.Mode.OFF);
        logger.info("EnvPreListener order : {0}",env);
    }
}

##ApplicationPreparedEvent 监听ApplicationPreparedEvent的事件

spring boot application正在启动中,ApplicationContext已就绪但是未刷新

public class AppPreLinstener implements ApplicationListener<ApplicationPreparedEvent> {
    private  final Logger logger = LoggerFactory.getLogger(AppPreLinstener.class);

    @Override
    public void onApplicationEvent(ApplicationPreparedEvent event) {
        logger.info("AppPreLinstener order");


        Set<ApplicationListener<?>> listenerSet = event.getSpringApplication().getListeners();
        listenerSet.forEach(set->{
        });
    }
}

##ApplicationStartedEvent 监听ApplicationStartedEvent的事件

spring boot启动开始时执行的事件

public class AppStartLinstener implements ApplicationListener<ApplicationReadyEvent>{
    private final Logger logger = LoggerFactory.getLogger(AppStartLinstener.class);

    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        logger.info("AppStartLinstener order");
    }
}

##ApplicationReadyEvent 监听ApplicationReadyEvent的事件 spring boot准备就绪时执行的事件

public class AppReadyLinstener implements ApplicationListener<ApplicationReadyEvent> {

    private  final Logger logger = LoggerFactory.getLogger(AppReadyLinstener.class);

    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        logger.info("AppReadyLinstener order");
    }

}

##ApplicationFailedEvent spring boot执行失败事件

##注册监听事件 在调用springApplication中也可以调用addListener方法

@Configuration
@EnableConfigServer
public class ConfigServer {
    public static void main(String args[]){
        new SpringApplicationBuilder(ConfigServerApplication.class)
                .properties("spring.config.name=configserver")
                .listeners(new AppPreLinstener(),new EnvPreListener(),new AppStartLinstener(),new AppReadyLinstener())
                .run(args);
    }
}

© 著作权归作者所有

共有 人打赏支持
OSC屠夫
粉丝 11
博文 32
码字总数 8390
作品 0
浦东
程序员
springboot 开发入门,及问题汇总

1 . springboot简单介绍(http://projects.spring.io/spring-boot/) 现在的web项目几乎都会用到spring框架,而要使用spring难免需要配置大量的xml配置文件,而springboot的出现解 决了这一问...

崔江昆
2015/03/18
0
30
10分钟入门SpringBoot

SpringBoot是基于spring框架衍生的一种新的微服务框架,如果对Spring有一定了解的同学肯定知道在Spring中需要配置各种xml文件完成bean的注册操作,随着服务越来越多,配置就变得越来越复杂,...

jwfy
06/14
0
0
Spring Boot 全家桶 - SpringBootBucket

Spring Boot 现在已经成为Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。 本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通过“一...

一刀
03/05
0
1
从SpringBoot源码分析 配置文件的加载原理和优先级

本文从SpringBoot源码分析 配置文件的加载原理和配置文件的优先级 跟入源码之前,先提一个问题: SpringBoot 既可以加载指定目录下的配置文件获取配置项,也可以通过启动参数(VM Options)传...

tanliwei
07/13
0
0
Netty(一) SpringBoot 整合长连接心跳机制

前言 Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳。 服务端也每隔 N 秒检测是否需要...

crossoverJie
05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部