事件监听机制相关测试|学习笔记

简介: 快速学习事件监听机制相关测试

开发者学堂课程【SpringBoot快速掌握 - 核心技术事件监听机制相关测试】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/612/detail/9282


事件监听机制相关测试


下面是几个重要的事件回调机制

1.创建 ApplicationContextlnitializer

首先创建 listener,将所有实现类创建在内,再创建HelloApplicationContextlnitializer 接口类,再实现ApplicationContextlnitializer,这里的泛型是 ConfigurableApplicationContext,再添加为实现的方法,这里有一个初始化方法,直接运行打印,测试代码模块如下:

package com. atguigu. springboot. listener;

import org.springframework.context.ApplicationContextInitializer;

import org.springframework.context.ConfigurableApplicationContext;

public class HelloApplicationContextInitializer implements ApplicationContextInitializer{

@Override

public void initialize(ConfigurableApplicationContext applicationContext) {

System.out.println("ApplicationContextInitializer...initialize..."+applicationContext);

2.实现  SpringApplicationRunListener  类接口:

添加实现方法,SpringApplicationRunListener  是在  ioc 容器未创建前调用 start,当基础环境准备好后调用 environmentPrepared, 当 ioc 的 Context 准备好后调用 contextPrepared,当 contextPrepared 整个运行完后调用所有的 contextLoaded,所有加载完后最后调用 finished,代码测试模块如下:

public class HelloSpringApplicationRunListener implements SpringApplicationRunListener {

@Override

public void starting() {

//监听容器的开始

System.out.println("SpringApplicationRunListener...starting..");}

@Override

public void environmentPrepared(ConfigurableEnvironment environment) {//准备的环境,也能获取到准备好的环境信息,环境里面还能拿到系统的一些属性

object o=environment.getSystemProperties().get("os .name");

System.out.println("SpringApplicationRunListener...environmentPrepared.. "+o);

}

@Override

public void contextPrepared(ConfigurableApplicationContext context) {

System.out.println("SpringApplicationRunListener...contextPrepared...");}

@Override

public void contextLoaded(ConfigurableApplicationContext context) {

System.out.println("SpringApplicationRunListener...contextLoaded...");// contextLoaded 加载完成

}

@Override

public void finished(ConfigurableApplicationContext context, Throwable exception) {

//创建完成

System.out.println("SpringApplicationRunListener...finished...");}}

3.实现  ApplicationRunner  类接口

添加实现方法,有一个  run 方法,测试模块代码如下:

package com.atguigu.springboot.listener;

import org.springframework.boot.Applicat ionArguments;

import org.springframework.boot.ApplicationRunner ;

import org.springframework.stereotype.Component;

@Component

public class HelloApplicationRunner implements Applicati onRunner {

@Override

public void run(ApplicationArguments args) throws Exception {

System.out.println("ApplicationRunner...run....");

}

}

4.实现 CommandLineRunner 类接口

添加实现方法,也有一个 run 方法,只不过是通过 args  实现的,测试模块代码如下:

package com.atguigu.springboot.listener;

import org .springframework.boot.CommandLineRunner;

import java.util.Arrays;

@Component

public class HelloCommandLineRunner implements CommandLineRunner {

@Override

public void run(String... args) throws Exception {

System.out.println("CommandLineRunner...run..."+ Arrays.asList(args));

}

}

写好后要作用的话需要配置,所以  ApplicationContextlnitializer,SpringApplicationRunListener  需要配置在 META-INF/spring.factories,需要配置的在个人原来的类路径下新建 META-INF 文件夹,文件夹下新建 spring.factories ,具体配置可以参考自动配置包下面的  spring.factories ,配置如下:

org.springframework.context.ApplicationContextInitializer=\

com.atguigu.springboot.listener.HelloApplicationContextInitializer

org.springframework.boot.SpringApplicationRunListener=\

com.atguigu.springboot.listener.HelloSpringApplicationRunListener

此时还需向 SpringApplicationRunListener 中写入有参构造器如下:

public HelloSpringApplicationRunListener(SpringApplication application, String[] args){

}

  ApplicationRunner,CommandLineRunner 只需要放在 ioc 容器中,所有容器中的需要再增加 @Component 注解

最后成功运行。

相关文章
|
7月前
反射机制测试实体类User
反射机制测试实体类User
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
244 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
47 2
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
72 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
2月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
43 1
|
2月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
45 1
|
4月前
|
监控 测试技术 数据库
Python自动化测试之异常处理机制
总体而言,妥善设计的异常处理策略让自动化测试更加稳定和可靠,同时也使得测试结果更加清晰、易于理解和维护。在设计自动化测试脚本时,务必考虑到异常处理机制的实现,以保证测试过程中遇到意外情况时的鲁棒性和信息的有效传达。
50 2
|
6月前
|
前端开发 JavaScript 算法
JavaScript事件监听测试代码
JavaScript事件监听测试代码
35 0
|
7月前
|
敏捷开发 机器学习/深度学习 Java
Java中的异常处理机制深入理解与实践:持续集成在软件测试中的应用探索自动化测试在敏捷开发中的关键作用
【4月更文挑战第29天】在Java编程中,异常处理是一个重要的概念。它允许开发者在程序执行过程中遇到错误或异常情况时,能够捕获并处理这些异常,从而保证程序的稳定运行。本文将详细介绍Java中的异常处理机制,包括异常的分类、异常的处理方式以及自定义异常等内容。 【4月更文挑战第29天】 随着敏捷开发和DevOps文化的兴起,持续集成(CI)已成为现代软件开发周期中不可或缺的一环。本文将探讨持续集成在软件测试领域内的关键作用、实施策略以及面临的挑战。通过对自动化构建、测试用例管理、及时反馈等核心要素的详细分析,揭示持续集成如何提高软件质量和加速交付过程。 【4月更文挑战第29天】 在当今快速发
|
7月前
|
Java 测试技术 持续交付
Java中的异常处理机制探索自动化测试在微服务架构中的实践与挑战
【5月更文挑战第27天】本文将深入探讨Java中的异常处理机制,包括异常的概念、分类以及如何使用try-catch-finally语句进行异常处理。文章还将介绍自定义异常的方法以及在实际开发中如何选择合适的异常处理策略。 【5月更文挑战第27天】 随着软件开发领域向微服务架构的转型,传统的软件测试方法面临诸多挑战。本文旨在探讨自动化测试在微服务环境下的应用实践及所面临的问题。我们将从微服务的特性出发,分析自动化测试的必要性,并深入讨论如何构建一个高效、鲁棒的自动化测试框架。文章还将介绍一系列创新的测试策略和工具选择,以及如何克服微服务带来的分布式复杂性。最后,通过案例研究,展示自动化测试在实