`
raymond.chen
  • 浏览: 1418579 次
  • 性别: 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.doc

    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启动扩展点详细总结.docx

    我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解...业务代码也能合理利用这些扩展点写出更加漂亮的代码。

    SpringBoot+Vue前后端分离外卖点单系统.zip

    如果您正在寻找一个现代化、高效且易于扩展的开发框架,那么这个SpringBoot项目将是您的理想选择。 主要特点: 快速开发:SpringBoot通过自动配置和约定大于配置的原则,大大简化了项目设置和开发过程。 易于扩展...

    springbootsecurity01.zip

    ## 关键注意点 1、用户验证实现UserDetailsService接口,注意角色需要ROLE_kaitou 2、扩展WebSecurityConfigurerAdapter,覆盖configure(HttpSecurity http) 第一句必须是http.antMatcher("/portal/**").authorize...

    SpringBoot项目基于SpringBoot的网上订餐系统.zip

    6. 用户评论:允许顾客对所点菜品和服务进行评价,供其他顾客参考。 7. 数据分析:生成销售报告,分析用户行为,帮助餐厅优化菜单和服务。 8. 客户服务:提供客服模块,解答顾客疑问,处理订单相关问题。 9. 移动...

    SpringBoot整合websocket实现数据实时推送

    通过呆着读者手写速成版本的websocket入门案例,以项目案例的方式带你体验websocket的使用场景和相关知识内容。...此资源以案例代入知识点的方式,让你快速上手websocket的相关学习,可针对项目本身向外扩展。

    JAVA毕业设计之springboot jsp小说阅读网站项目(springboot完整源码+说明).zip

    总之,该项目不仅提供了一个完整的小说阅读网站示例,还涵盖了springboot框架、MVC架构、权限管理、数据库操作、前端页面设计等多个方面的知识点,是一个非常适合用于毕业设计或学习实践的项目资源。希望能对JAVA...

    springboot知识管理系统.zip

    该系统具有以下特点:模块化设计:系统采用模块化设计,各个功能模块之间相互独立,便于扩展和维护。易于使用:系统界面简洁明了,操作简便,用户可以轻松上手。知识分类:用户可以对知识进行分类管理,便于查找和...

    SpringBoot项目基于springboot的信息技术知识赛系统的设计与实现.zip

    1. 题库维护:管理员可以添加、编辑和分类题目,建立并维护一个涵盖各种IT知识点的题库。 2. 比赛管理:允许管理员创建和定制比赛,设置参赛规则、题目和时间限制等。 3. 用户注册与认证:用户可注册账户,参与...

    JAVA毕业设计之springboot114基于多维分类的知识管理系统(springboot+mysql)完整源码.zip

    标题:JAVA毕业设计之springboot114基于多维分类的知识管理系统(springboot+mysql)完整源码.zip资源介绍:本资源为一款基于Spring Boot框架和MySQL数据库的多维分类知识管理系统的完整源码。系统采用当下流行的Java...

    模仿知乎做的SpringBoot问答社交网站项目

    模仿知乎做的SpringBoot问答社交网站项目,项目技术点SpringBoot+Mybatis+Mysql+redis+solr+velocity+python爬虫进行数据填充,项目亮点有手写异步消息框架、敏感词过滤等 适合学习/练手、毕业设计、课程设计、期末/...

    基于SpringBoot 2的管理后台系统源码

    有数十个基于此的商业应用,包含了用户管理,组织机构管理,角色管理,功能点管理,菜单管理,权限分配,数据权限分配,代码生成等功能 相比其他的后台开发平台脚手架,SpringBoot-Plus 使用简单,可以轻易完成中型...

    消息队列学习(springboot+kafka+activemq)

    可帮助快速了解kafka、activemq 两者在 Queue topic producer consumer 使用异同点,demo仅仅是最简化代码,演示通信和使用,无法对两者的集群模式进行测试,如果有对集群模式有兴趣,可自行扩展集群节点,更好 的...

    (2023最新)基于springboot鲜花商城系统的毕业设计

    (2023最新)基于springboot鲜花商城系统的...整个设计过程贯穿了系统分析、数据库设计、接口设计、前后端分离等知识点,对学生的学习和锻炼有很大的帮助。 基于springboot的鲜花商城系统毕业设计,系统功能齐全、技术实

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    6.1.1 入口类和@SpringBootApplication 138 6.1.2 关闭特定的自动配置 139 6.1.3 定制Banner 139 6.1.4 Spring Boot 的配置文件 140 6.1.5 starter pom 141 6.1.6 使用xml 配置 143 6.2 外部配置 143 6.2.1 命令行...

    基于springboot的web项目最佳实践+源代码+文档说明

    要做到简单,易用,扩展性更好,还需做不少二次封装,于是便写了个基于`springboot`的web项目脚手架,对一些常用的框架进行整合,并进行了简单的二次封装。 项目名`baymax`取自动画片超能陆战队里面的大白,大白是...

    Java 基于springboot高校表白墙社交系统

    基于SpringBoot的高校表白墙社交系统 快速开始 搭建步骤 Schedule 1 -搭建环境 Schedule 2 -基本框架开发/IOC和AOP/数据库配置和首页的创建/用户注册登录以及使用token Schedule 3 -新增发表问题功能,并防止xss...

    nb-springboot:支持使用Spring Boot编程的NetBeans IDE插件

    NB-SpringBoot NetBeans IDE插件支持编程。 要求和安装 ... 扩展语法突出显示(点分隔键,数组符号) 突出显示以下错误:语法错误,重复属性,数据类型不匹配和未知属性 快速修复:删除不赞成使用的,未知

Global site tag (gtag.js) - Google Analytics