扩展点都不知道不要说你用了Spring Boot

这篇具有很好参考价值的文章主要介绍了扩展点都不知道不要说你用了Spring Boot。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

哈哈,本次有点标题党的嫌疑了,话又说回来,如果只停留在Spring Boot的基本的CRUD层面,未免也太过局限了,当需要去扩展一些功能,写一些组件的时候,就感觉无从下手了,所以本次,我们从一个标题党开始,了解一下Spring Boot 的扩展点,可以系统的了解记忆一下,此文不是八股文,希望大家能学以致用

Spring Boot是一个基于Spring框架的快速开发框架,做java开发的同学基本上都使用过,它通过提供一系列的自动配置和快速开发的特性,帮助我们快速搭建和开发高效、可扩展的应用程序。然而,为了满足不同开发需求的多样性,Spring Boot也提供了丰富的扩展点,开发人员可以通过扩展点来实现自定义的应用程序功能和行为。本文将介绍Spring Boot的扩展点分类和特点,帮助大家更好地理解和应用Spring Boot的扩展点。无论您是初学者还是有一定经验的开发人员,本文都将为您提供一些有用的信息和思路,帮助您更好地使用Spring Boot。
扩展点都不知道不要说你用了Spring Boot,Spring boot 核心源码浅析系列,spring boot,java,后端,微服务

冰点出品,必属精品


1.扩展点

根据Spring Boot官方文档,可以将Spring Boot的扩展点分为以下几类:
这里面的每一类都事

1.1. 应用程序生命周期扩展点

应用程序生命周期扩展点是指在Spring Boot应用程序的生命周期中,提供了一系列的扩展点,开发人员可以通过实现这些扩展点来对应用程序的生命周期进行控制和定制。这些扩展点主要包括以下几个:
扩展点都不知道不要说你用了Spring Boot,Spring boot 核心源码浅析系列,spring boot,java,后端,微服务
此图来自网络

1.1.1 SpringApplicationRunListener

它是一个监听器接口,用于在Spring应用程序的运行生命周期中监听和响应相关事件。可以通过实现该接口来自定义应用程序的启动和关闭行为。

1.1.2 ApplicationEnvironmentPreparedEvent

该事件在应用程序启动前触发,用于在环境准备阶段执行一些操作,例如:加载配置文件、设置系统属性等。

1.1.3 ApplicationPreparedEvent

该事件在应用程序上下文创建完成后触发,用于在应用程序准备阶段执行一些操作,例如:创建和初始化Bean等。

1.1.4 ApplicationStartedEvent

该事件在应用程序启动完成后触发,用于在应用程序启动后执行一些操作,例如:向日志中输出启动信息等。

1.1.5 ApplicationReadyEvent

该事件在应用程序准备就绪后触发,用于在应用程序运行期间执行一些操作,例如:启动定时任务、初始化缓存等。

1.1.6 ApplicationFailedEvent

该事件在应用程序启动失败后触发,用于在应用程序启动失败时执行一些操作,例如:记录日志、发送告警等。


1.2. 容器扩展点

我们来先看一张图,大概了解一下。Spring Boot容器扩展点主要用于自定义Spring容器的创建和配置,提供了一种灵活的方式来增强和定制Spring容器的功能,进而实现应用程序的定制化需求。
扩展点都不知道不要说你用了Spring Boot,Spring boot 核心源码浅析系列,spring boot,java,后端,微服务
此图来自网络

Spring Boot的容器扩展点主要用于自定义Spring容器的创建和配置,通过这些扩展点,开发人员可以对Spring容器进行更加细粒度的控制和定制,以满足特定的应用场景和需求。具体来说,容器扩展点的作用包括:

  1. 修改Bean的定义信息
    BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor接口可以在Spring容器实例化Bean之前或之后修改Bean的定义信息,例如:修改Bean的属性值、增加或删除Bean的定义等。这些扩展点可以让开发人员在Bean实例化之前或之后对Bean的定义进行修改,以满足特定的需求。

  2. 修改Bean的属性值或执行其他操作
    BeanPostProcessor接口可以在Spring容器实例化Bean后修改Bean的属性值或执行其他操作,例如:修改Bean的属性值、添加Bean的初始化方法等。这些扩展点可以让开发人员在Bean实例化后对Bean的属性值进行修改或执行其他操作,以满足特定的需求。

  3. 自定义Bean的创建、配置、解析等
    通过实现BeanFactoryPostProcessor和BeanPostProcessor接口,开发人员可以自定义Bean的创建、配置和解析等过程,以满足特定的需求。例如,可以自定义BeanFactoryPostProcessor接口来修改Bean定义信息,自定义BeanPostProcessor接口来修改Bean的属性值或执行其他操作。

1.2.1 BeanFactoryPostProcessor

  • 用于在Spring容器实例化Bean之前修改Bean的定义信息。通过实现该接口,开发人员可以自定义Bean的配置和解析,例如:修改Bean的属性值、增加或删除Bean的定义等。这种方式可以在Spring容器实例化Bean之前对Bean的定义进行修改,从而实现更加灵活的配置和定制。

1.2.2 BeanPostProcessor

_ 用于在Spring容器实例化Bean后修改Bean的属性值或执行其他操作。通过实现该接口,开发人员可以自定义Bean的初始化逻辑,例如:修改Bean的属性值、添加Bean的初始化方法等。这种方式可以在Spring容器实例化Bean之后对Bean的属性值进行修改,从而实现更加灵活的初始化逻辑。_

1.2.3 BeanDefinitionRegistryPostProcessor

BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,用于在Spring容器实例化Bean定义之前修改Bean定义信息。通过实现该接口,开发人员可以自定义Bean的创建和解析逻辑,例如:修改Bean的属性值、增加或删除Bean的定义等。这种方式可以在Spring容器实例化Bean定义之前对Bean定义进行修改,从而实现更加灵活的配置和定制。


1.3. 自动配置扩展点

扩展点都不知道不要说你用了Spring Boot,Spring boot 核心源码浅析系列,spring boot,java,后端,微服务

Spring Boot提供了多种自动配置扩展点,通过这些扩展点可以实现自动配置类的选择、条件筛选等功能。以下是几个常用的自动配置扩展点:

1.3.1 AutoConfigurationImportSelector

AutoConfigurationImportSelector是一个接口,用于实现自动配置类的选择逻辑。在Spring Boot应用程序启动时,会自动加载AutoConfigurationImportSelector接口的实现类,实现类会根据条件进行筛选,选择符合条件的自动配置类并加载。

1.3.2 EnableAutoConfiguration

EnableAutoConfiguration是一个注解,用于开启自动配置功能。在应用程序中添加该注解后,Spring Boot会自动加载符合条件的自动配置类,实现自动配置的功能。该注解可以通过exclude属性排除一些自动配置类,也可以通过excludeName属性排除一些自动配置类的名称。

1.3.3 ConditionalOnClass

ConditionalOnClass是一个注解,用于在类路径中存在指定的类时才会加载自动配置类或Bean。可以使用该注解来检查类的可用性,如果类存在,则加载自动配置类或Bean,否则跳过。

1.3.4 ConditionalOnBean

ConditionalOnBean是一个注解,用于在容器中存在指定的Bean时才会加载自动配置类或Bean。可以使用该注解来检查Bean的可用性,如果Bean存在,则加载自动配置类或Bean,否则跳过。

1.3.5 ConditionalOnMissingBean

ConditionalOnMissingBean是一个注解,用于在容器中不存在指定的Bean时才会加载自动配置类或Bean。可以使用该注解来检查Bean的可用性,如果Bean不存在,则加载自动配置类或Bean,否则跳过。

这些自动配置扩展点可以帮助开发人员实现自动配置类的选择、条件筛选等功能,从而实现更加灵活、可扩展的应用程序。通过使用这些扩展点,开发人员可以自定义自动配置的功能和条件,以满足特定的需求。


1.4. Web扩展点

Spring Boot提供了多种扩展点用于自定义Web应用程序的配置和行为。其中,以下四个扩展点用于处理Web请求和响应相关的操作:

1.4.1 WebMvcConfigurer

WebMvcConfigurer是一个接口,用于自定义Spring MVC的配置。通过实现该接口,可以添加拦截器、消息转换器等,以满足特定的需求。例如,可以添加拦截器来验证请求的安全性,或者添加消息转换器来支持自定义的数据格式。

1.4.2 HandlerInterceptor

HandlerInterceptor是一个接口,用于自定义拦截器。拦截器可以在请求处理前或处理后执行自定义的逻辑,例如:验证用户权限、记录请求日志等。通过实现该接口,可以实现自定义的拦截器,以满足特定的需求。

1.4.3 HandlerMethodArgumentResolver

HandlerMethodArgumentResolver是一个接口,用于自定义请求参数解析器。在处理请求时,Spring会将请求中的参数解析为对应的Java对象。通过实现该接口,可以自定义请求参数解析器,以支持自定义的参数类型或数据格式。

1.4.4 HandlerMethodReturnValueHandler

HandlerMethodReturnValueHandler是一个接口,用于自定义请求返回值处理器。在处理请求时,Spring会将Java对象转换为响应结果并返回给客户端。通过实现该接口,可以自定义请求返回值处理器,以支持自定义的数据格式或响应结果。

总之,这些扩展点可以帮助开发人员自定义Web应用程序的配置和行为,以满足特定的需求。通过实现这些扩展点,可以添加拦截器、消息转换器等,实现自定义的请求参数解析器和返回值处理器,从而实现更加灵活、可扩展的Web应用程序。


1.5. 数据库扩展点

Spring Boot提供了多种数据访问相关的扩展点,以下是几个常用的扩展点:

1.5.1 DataSource

DataSource是一个接口,用于定义数据源的配置信息。数据源是应用程序与数据库之间的连接池,通过数据源可以配置数据库驱动、连接池大小等属性,与数据库建立连接。

1.5.2 TransactionManager

TransactionManager是一个接口,用于定义事务管理器的配置信息。事务管理器用于管理应用程序中的事务,例如:事务隔离级别、超时时间等。通过实现TransactionManager接口,可以自定义事务管理器的配置信息,以满足特定的需求。

1.5.3 JdbcTemplate

JdbcTemplate是Spring提供的数据访问模板,用于简化JDBC操作。通过JdbcTemplate,可以更加方便地进行数据库操作,例如:执行SQL语句、执行存储过程等。JdbcTemplate封装了大量的JDBC操作,提供了更加简单、易用的API,可以大大提高开发效率。

1.5.4 JpaVendorAdapter

JpaVendorAdapter是一个接口,用于定义JPA厂商适配器的配置信息。JPA厂商适配器用于适配不同的JPA实现,例如:Hibernate、EclipseLink等。通过实现JpaVendorAdapter接口,可以自定义JPA厂商适配器的配置信息,例如:数据库方言、JPA实现等。


1.6. 安全扩展点

Spring Boot提供了多种安全相关的扩展点 我们基本上用的很少,大家只需要了解一下。后续我会从这个里面挑选两个,写个项目真实使用的示例,供大家参考。

安全扩展点可以帮助开发人员实现更加灵活、可扩展的安全功能,从而满足特定的需求。通过使用这些扩展点,可以自定义Spring Security的配置信息、Web应用程序的安全配置信息,以及自定义用户认证方式、用户信息获取方式等,以实现更加定制化的安全功能。

1.6.1 SecurityConfigurerAdapter

SecurityConfigurerAdapter是一个类,用于定义Spring Security的配置信息。通过继承该类,可以实现用户认证和授权、添加安全过滤器等功能。SecurityConfigurerAdapter提供了一系列的方法,用于配置Spring Security的不同方面,例如:配置用户认证、授权、添加过滤器等。

1.6.2 WebSecurityConfigurerAdapter

WebSecurityConfigurerAdapter是一个类,用于定义Web应用程序的安全配置信息。通过继承该类,可以实现定义安全规则、设置用户认证和授权等功能。WebSecurityConfigurerAdapter提供了一系列的方法,用于配置Web应用程序的安全性,例如:配置HTTP安全规则、配置表单登录、配置用户认证等。

1.6.3 AuthenticationProvider

AuthenticationProvider是一个接口,用于自定义用户认证方式。通过实现该接口,可以实现自定义的用户名和密码认证方式、OAuth2认证方式等。AuthenticationProvider提供了一系列的方法,用于实现用户认证的不同方面,例如:验证用户密码、获取用户权限等。

1.6.4 UserDetailsService

UserDetailsService是一个接口,用于自定义用户信息获取方式。通过实现该接口,可以从数据库或其他数据源中获取用户信息。UserDetailsService提供了一个方法,用于根据用户名获取用户信息,开发人员可以根据实际需求进行自定义实现。


1.7. 其他扩展点

下面这些扩展点不知道怎么归类,有点杂,我们暂且归类为其他扩展点吧,但是都是比较常用的一些扩展点。可以帮助开发人员实现更加灵活、可扩展的应用程序功能,从而满足特定的需求。通过使用这些扩展点,可以自定义命令行操作、命令行参数处理方式、嵌入式Servlet容器的配置信息、健康检查指标以及异常处理方式等,以实现更加定制化的应用程序功能。

1.7.1 CommandLineRunner

CommandLineRunner是一个接口,用于在Spring Boot应用程序启动后执行一些命令行操作。例如:初始化数据、启动定时任务等。通过实现CommandLineRunner接口,可以自定义需要执行的命令行操作。

1.7.2 ApplicationRunner

ApplicationRunner是一个接口,与CommandLineRunner类似,也用于在Spring Boot应用程序启动后执行一些命令行操作。但其提供了更灵活的参数处理方式,可以接收一个ApplicationArguments对象,从而更加方便地处理命令行参数。

1.7.3 CommandLinePropertySource

CommandLinePropertySource是一个接口,用于将命令行参数转换为Spring环境中的属性值。例如:将命令行参数–server.port=8080转换为spring.server.port=8080的属性值。通过实现CommandLinePropertySource接口,可以自定义命令行参数的处理方式,以满足特定的需求。

1.7.4 EmbeddedServletContainerCustomizer

EmbeddedServletContainerCustomizer是一个接口,用于自定义嵌入式Servlet容器的配置信息。例如:自定义端口号、设置SSL证书等。通过实现EmbeddedServletContainerCustomizer接口,可以实现嵌入式Servlet容器的自定义配置。

1.7.5 HealthIndicator

HealthIndicator是一个接口,用于定义应用程序的健康检查指标。例如:检查数据库连接是否正常、检查磁盘使用情况等。通过实现HealthIndicator接口,可以自定义应用程序的健康检查指标,以便及时发现和解决应用程序的问题。

1.7.6 ErrorController

ErrorController是一个接口,用于自定义应用程序的异常处理方式。例如:自定义404页面、重定向到错误页面等。通过实现ErrorController接口,可以自定义应用程序的异常处理方式,以提高用户的体验。

2. 参考文档

  1. Spring Boot官方文档:https://spring.io/projects/spring-boot
  2. Spring Boot Reference Guide:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
  3. Spring Boot官方文档相关 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-customizing-bean-definitions
  4. Spring Boot 自动配置 https://docs.spring.io/spring-boot/docs/3.1.2/reference/html/auto-configuration-classes.html#appendix.auto-configuration-classes

扩展点都不知道不要说你用了Spring Boot,Spring boot 核心源码浅析系列,spring boot,java,后端,微服务

👏好了,本次的Spring Boot 的扩展点分享就到这儿,我是冰点,下次见。如果我的文章对你有所收获,可以给个赞。如果有疑问可以在评论区留言。
扩展点都不知道不要说你用了Spring Boot,Spring boot 核心源码浅析系列,spring boot,java,后端,微服务文章来源地址https://www.toymoban.com/news/detail-607451.html

到了这里,关于扩展点都不知道不要说你用了Spring Boot的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 媲美ChatGPT的Bard你用了吗,看起来还不错!

    在这个技术日新月异的时代,人工智能已成为我们生活中不可或缺的一部分。聊天机器人,以其独特的表现形式,备受人们追捧。在这里,笔者要向大家推荐几个不错的聊天机器人网站,其中包括Google Bard。看看他自己怎么模仿某位小说家介绍的—— Google Bard:网络盲道的“

    2024年02月15日
    浏览(44)
  • 【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

    前言: 大家好,我是 良辰丫 ,在上一篇文章中我们已经学习了Spring Boot的配置,接下来我们要学习一些日志相关的东西,什么是日志呢?我们慢慢往下看.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些

    2024年02月08日
    浏览(44)
  • Spring Boot 启动扩展点深入解析

    Spring Boot以其“约定优于配置”的理念和简洁的自动配置机制,极大地简化了Spring应用的初始化和开发过程。然而,在某些特定场景下,我们可能需要对Spring Boot的启动过程进行定制或扩展。这时,了解Spring Boot的启动扩展点就显得尤为重要。 来自:gwzkb.com 来自:dlanye.com Spring

    2024年04月08日
    浏览(45)
  • 4个很多人都不知道的现代JavaScript技巧

    JavaScript在不断的进化和升级,越来越多的新特性让我们的代码变得更加简洁。因此,今天这篇文章,我将跟大家分享 4 个不常用的 JavaScript 运算符。让我们一起研究它们。 1.可选的链接运算符 这个功能非常好用,它可以防止我的代码出错,甚至可以大大简化它。 例如,我们

    2024年02月02日
    浏览(35)
  • 别人都不知道的“好用”网站,让你的效率飞快

    ✅🎡个人主页:程序猿追 ✅🎡系列专栏:【日常学习上的分享】 ✅🎡目前状态:创建Java学习之路(零基础到就业实战)系列,目前更新到JAVAWEB开发 ✅🎡作者简介:大家好,我是程序猿追,全栈领域新星创作者,算法爱好者,常在作者周榜排名前30,某不知名的 ACMer ✅🎡

    2024年02月10日
    浏览(91)
  • Spring Boot 应用程序生命周期扩展点妙用

    上一篇我们着重按照分类讲解了一下Spring Boot的常见扩展点,接下来我们讲解一下Spring Boot 的应用程序生命周期扩展点的一些妙用。 Spring Boot的应用程序生命周期扩展点是一些接口,可以让开发者在应用程序的不同生命周期阶段插入自己的逻辑。这些扩展点可以帮助开发者在

    2024年02月15日
    浏览(53)
  • 面试被打脸,数据结构底层都不知道么--回去等通知吧

    数据结构之常见的8种数据结构: -数组Array -链表 Linked List -堆 heap -栈 stack -队列 Queue -树 Tree -散列表 Hash -图 Graph 数据结构-链表篇 Linklist定义: -是一种线性表,并不会按线性的顺序存储数据,即逻辑上相邻,物理上不一定相邻的元素。通过指针域来寻找对应的元素。 Linkli

    2024年02月10日
    浏览(36)
  • 2023面试被打脸,数据结构底层都不知道么--回去等通知吧

    数据结构之常见的8种数据结构: -数组Array -链表 Linked List -堆 heap -栈 stack -队列 Queue -树 Tree -散列表 Hash -图 Graph 数据结构-链表篇 Linklist定义: -是一种线性表,并不会按线性的顺序存储数据,即逻辑上相邻,物理上不一定相邻的元素。通过指针域来寻找对应的元素。 Linkli

    2024年02月10日
    浏览(31)
  • 百分之80新手都不知道,SEO搜索引擎优化【sitemap网站地图 配置】

    Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智

    2023年04月09日
    浏览(67)
  • “深入了解Spring Boot:构建高效、可扩展的Java应用程序“

    标题:深入了解Spring Boot:构建高效、可扩展的Java应用程序 摘要:Spring Boot是一款快速构建Java应用程序的开发框架,它基于Spring框架,提供了一系列的自动化配置和约定,使得开发者能够更快速、更高效地构建出高质量的应用程序。本文将深入探讨Spring Boot的核心特性和使用

    2024年02月14日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包