`
raymond.chen
  • 浏览: 1452916 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Springboot的扩展点

 
阅读更多

1、SpringApplicationRunListener接口

        SpringApplicationRunListener接口用于在Springboot启动初始化的过程中可以通过接口回调来让用户在启动的各个流程中可以加入自己的逻辑。

 

        用来在整个启动流程中接收不同执行点事件通知的监听者,SpringApplicationRunListener接口规定了SpringBoot的生命周期,在各个生命周期广播相应的事件,调用实际的ApplicationListener类。

 

创建实现类:

public class SeasySpringApplicationRunListener implements SpringApplicationRunListener {
	private final SpringApplication application;
    private final String[] args;

	public SeasySpringApplicationRunListener(SpringApplication application, String[] args){
		this.application = application;
        this.args = args;
	}
	
	@Override
	public void starting() {
		System.out.println("starting...");
	}

	@Override
	public void environmentPrepared(ConfigurableEnvironment environment) {
		System.out.println("environmentPrepared...");
	}

	@Override
	public void contextPrepared(ConfigurableApplicationContext context) {
		System.out.println("contextPrepared...");
	}

	@Override
	public void contextLoaded(ConfigurableApplicationContext context) {
		System.out.println("contextLoaded...");
	}
	
	@Override
	public void failed(ConfigurableApplicationContext context, Throwable exception) {
		System.out.println("failed...");
		if(exception != null){
			exception.printStackTrace();
		}
	}
	
	@Override
	public void started(ConfigurableApplicationContext context) {
		System.out.println("started...");
	}
	
	@Override
	public void running(ConfigurableApplicationContext context) {
		System.out.println("running...");
	}
}

 

在META-INF\spring.fatories文件中添加以下内容:

org.springframework.boot.SpringApplicationRunListener=com.seasy.springboottest.extension.SeasySpringApplicationRunListener

 

2、ApplicationContextInitializer接口

        这是一个在ConfigurableApplicationContext刷新之前初始化ConfigurableApplicationContext的回调接口,对ConfigurableApplicationContext的实例做进一步的设置或者处理。

 

创建实现类:

public class SeasyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
	public void initialize(ConfigurableApplicationContext applicationContext) {
		System.out.println("initialize...");
	};
}

 

使用方式有三种:

1、使用SpringApplication.addInitializers或者SpringApplication.setInitializers
		SpringApplication springApplication = new SpringApplication(Main.class);
		springApplication.addInitializers(new SeasyApplicationContextInitializer());
		springApplication.run(args);

2、在Application.properties属性文件中添加以下配置:
	context.initializer.classes=com.seasy.springboottest.extension.SeasyApplicationContextInitializer

3、在META-INF\spring.fatories文件中添加以下内容:
	org.springframework.context.ApplicationContextInitializer=com.seasy.springboottest.extension.SeasyApplicationContextInitializer

 

3、ApplicationListener接口

        ApplicationListener是上下文监听器,Spring框架对Java中实现的监听者模式的一种框架实现。当需要监听自定义事件时,可以新建一个实现ApplicationListener接口的类,并将该类配置到Spring容器中。

 

创建实现类:

//@Component("seasyApplicationListener")
public class SeasyApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		System.out.println("onApplicationEvent >> " + event.getClass().getName());
	}
}

 

使用方式有三种:

1、在META-INF\spring.fatories文件中添加以下内容:
	org.springframework.context.ApplicationListener=com.seasy.springboottest.extension.SeasyApplicationListener

2、用 @Component 注解类标注该类,由容器自动扫描、加载和实例化
	@Component("seasyApplicationListener")

3、使用SpringApplication.addListener或者SpringApplication.setListeners
	SpringApplication springApplication = new SpringApplication(Main.class);
	springApplication.addListeners(new SeasyApplicationListener());
	springApplication.run(args);

 

4、CommandLineRunner接口

        用于在应用程序初始化之后执行某些逻辑,它在所有Spring Beans都初始化之后执行。如果存在多个CommandLineRunner的实现类,可以使用@Order注解来排序。

 

创建实现类:

@Component
@Order(value=1)
public class SeasyCommandLineRunner implements CommandLineRunner {
	@Override
	public void run(String... args) throws Exception {
		//如果该方法内部抛出异常,则导致应用启动失败
		System.out.println("SeasyCommandLineRunner.run()...");
	}
}

 

5、ApplicationRunner接口

        如果需要在SpringBoot启动完成之后实现一些功能,可以通过实现ApplicationRunner接口来完成。如果存在多个实现类,可以使用@Order注解来排序。

 

ApplicationRunner的实现类:

@Component
@Order(value=2)
public class SeasyApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
		System.out.println("SeasyApplicationRunner.run()...");
    }
}

 

分享到:
评论

相关推荐

    SpringBoot扩展点EnvironmentPostProcessor.doc

    SpringBoot 扩展点 EnvironmentPostProcessor EnvironmentPostProcessor 是 SpringBoot 中的一个扩展点,用于在应用程序启动时加载配置属性。通过实现 EnvironmentPostProcessor 接口,可以在应用程序中加载自定义...

    Springboot启动扩展点超详细教程小结

    Springboot启动扩展点超详细教程小结 本文将详细介绍Springboot启动扩展点的超详细教程,通过图文并茂的形式给大家介绍了非常详细的Springboot启动扩展点知识点,对大家的学习或工作具有一定的参考借鉴价值。 ...

    springboot知识点整理

    4.6 SpringBoot扩展与全面接管 70 4.7 如何修改SpringBoot的默认配置 72 4.8 【实验】CRUD操作 73 4.8.1 默认访问首页 73 4.8.2 登录页面国际化 74 4.8.3 登录 80 4.8.4 拦截器进行登录检查 81 4.8.5 实验要求(没按...

    SpringBoot知识点整理思维导图

    SpringBoot知识点整理思维导图是针对Java开发领域中流行的微服务框架——Spring Boot进行系统性梳理的工具。Spring Boot以其快速启动、简化配置的特点,深受开发者喜爱。在本思维导图中,主要涵盖了以下几个核心知识...

    springboot+netty点对点即时通讯、聊天

    在本项目中,"springboot+netty点对点即时通讯、聊天" 是一个利用Spring Boot和Netty构建的实时通信应用,旨在实现用户之间的高效、低延迟的对话功能。以下将详细介绍该项目所涉及的关键技术和知识点。 1. **Spring...

    springboot

    通过以上知识点,我们可以快速搭建并运行一个完整的SpringBoot应用,实现各种功能,如Web服务、数据库操作、安全控制等,并且易于维护和扩展。SpringBoot以其简洁、高效的特点,已经成为现代Java开发的首选框架之一...

    Springboot启动时序图

    SpringBoot是一款基于Java的轻...通过理解这个启动时序,开发者可以更好地掌控SpringBoot应用的生命周期,优化启动性能,调试问题,以及自定义扩展点。对于大型项目,理解启动流程有助于定位和解决问题,提高开发效率。

    SpringBoot入门.pdf

    - SpringbootdemoApplication.java:这是SpringBoot应用的启动入口,它通常包含了main方法作为程序的入口点,并且使用@SpringBootApplication注解来标识这是一个SpringBoot应用。 - static目录:存放静态资源文件,...

    基于springboot实现的opc 客户端

    将OPC客户端集成到SpringBoot应用中,可以提供一个高效、易于管理和扩展的数据采集平台。 本示例是一个已经经过实际项目验证的基于SpringBoot的OPC客户端实现,旨在简化OPC通信并整合到微服务架构中。以下是对该...

    SpringBoot整合Dubbo增强版

    开发者可以根据项目需求,选择合适的配置和扩展点,充分利用这套集成方案。 总之,SpringBoot整合Dubbo增强版是一个优化过的解决方案,它解决了在SpringBoot中使用Dubbo时可能出现的问题,使得开发过程更加顺畅,...

    SpringBoot-OneNet.zip

    SpringBoot是Spring框架的一个扩展,旨在简化Spring应用的初始搭建以及开发过程。它内置了Tomcat服务器,可以快速构建可执行的JAR或WAR包。在本项目中,SpringBoot作为后端服务,处理前端请求,并与OneNet云平台...

    基于SpringBoot企业级完善架构

    1. **SpringBoot**:SpringBoot是Spring框架的扩展,它简化了Spring应用程序的初始搭建和配置工作。通过"约定优于配置"的原则,SpringBoot可以快速创建独立运行的应用程序,并内置了Tomcat服务器,使得开发和部署...

    基于springboot集成hbase过程解析

    将SpringBoot与HBase集成,可以实现高效、可扩展的数据存储和处理解决方案。 知识点1:HBase的特点 HBase是一种基于Hadoop的分布式、可扩展的NoSQL数据库,具有以下特点: * 高性能:HBase可以处理大量的数据读写...

    springboot多串口解析

    总的来说,"springboot多串口解析"项目涵盖了Java串口通信、SpringBoot集成、数据解析等多个技术点,对于理解和实践Java在物联网或硬件交互场景下的应用具有很高的价值。通过合理的设计和编程,可以构建出高效、稳定...

    03-SpringBoot启动过程源码解析-周瑜.pdf

    其次,需要获取BootstrapRegistryInitializer对象,从"META-INF/spring.factories"中读取key为BootstrapRegistryInitializer类型的扩展点,并实例化出对应扩展点对象。BootstrapRegistryInitializer的作用是可以初始...

    基于springboot的问答管理系统

    1. **SpringBoot基础**:SpringBoot是Spring框架的扩展,它预配置了许多常见设置,如嵌入式Web服务器(如Tomcat)、自动配置的Spring beans、健康检查端点等。通过使用SpringBoot,开发者可以快速地启动和运行应用...

    SpringBoot整合Dubbo案例

    总结来说,SpringBoot整合Dubbo涉及的主要知识点有: 1. **SpringBoot的自动配置和起步驱动开发**:理解SpringBoot如何简化应用开发,并学会在项目中利用其特性。 2. **Dubbo的核心概念**:包括服务提供者...

    SpringBoot

    学习SpringBoot+SpringCloud,需要掌握以下知识点: 1. **Spring框架基础**:理解IoC(Inversion of Control)和AOP(Aspect Oriented Programming)的概念。 2. **Maven或Gradle**:了解构建工具的使用,以便管理...

    SpringBoot整合Dubbo项目

    在实际开发中,还需要考虑服务治理、熔断、限流、降级等高级特性,Dubbo提供了丰富的扩展点来支持这些功能。同时,随着SpringCloud的崛起,SpringBoot与Dubbo的整合也有了新的方式,如使用Spring Cloud Gateway作为...

Global site tag (gtag.js) - Google Analytics