阿里微服务专家手写springboot实现一个简单的自动配置模块

jdx6 jdx6     2022-11-05     528

关键词:

技术分享图片

为了更好的理解 Spring Boot 的 自动配置和工作原理,我们自己来实现一个简单的自动配置模块。

假设,现在项目需要一个功能,需要自动记录项目发布者的相关信息,我们如何通过 Spring Boot 的自动配置,更好的实现功能呢?

实战的开端 – Maven搭建

先创建一个Maven项目,我来手动配置下 POM 文件。

技术分享图片

参数的配置 - 属性参数类

首先,我们定义一个自定义前缀,叫做 custom 吧。之前说到,这里的配置参数,可以通过 application.properties 中直接设置。那么,我们创建一个作者的字段,设置默认值为 LiangGzone。

技术分享图片

那么,聪明的你,应该想到了,我们在 application.properties 中配置的时候,就要这样配置了。

#custom

custom.author = James

真的很简单 - 简单的服务类

技术分享图片

你没有看错,真的是太简单了,没有高大上的复杂业务。它的主要用途就是赋值。

自动配置的核心 - 自动配置类

@ConditionalOnClass,参数中对应的类在 classpath 目录下存在时,才会去解析对应的配置类。因此,我们需要配置 AuthorServer 。

@EnableConfigurationProperties, 用来加载配置参数,所以它应该就是属性参数类

AuthorProperties。

技术分享图片

authorResolver方法的作用,即 AuthorProperties 的参数赋值到AuthorServer 中。

spring.factories 不要遗漏

我们需要实现自定义自动装配,就需要自定义 spring.factories 参数。所以,我们需要在 src/main/resources/ META-INF/spring.factories 中配置信息,值得注意的是,这个文件要自己创建。

技术分享图片

功能打包与配置依赖

好了,我们已经实现了一个简单的自动配置功能。那么,我们需要将这个项目打成 jar 包部署在我们的本地或者私服上。然后,就可以用了。

我们在另外一个项目中,配置 Maven 依赖。

技术分享图片

测试,测试

技术分享图片

运行起来,我们看下打印的发布者信息是什么?

我们在 application.properties 中配置一个信息。

#custom

custom.author = James

运行起来,我们看下打印的发布者信息是什么?

在此我向大家推荐一个架构学习交流群。交流学习群号:697-57-97-51 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

一、源码分析

技术分享图片

二、分布式架构

技术分享图片

三、微服务

技术分享图片

四、性能优化

技术分享图片

五、Java工程化

技术分享图片

springboot+nacos+kafka简单实现微服务流编排

最近一直在做微服务开发,涉及了一些数据处理模块的开发,每个处理业务都会开发独立的微服务,便于后面拓展和流编排。学习了SpringCloudDataFlow等框架,感觉这个框架对于我们来说太重了,维护起来也比较麻烦,于是根据流... 查看详情

用springboot简单搭建一个微服务项目

...进行具体介绍之前,我们会对SpringCloud微服务的基础SpringBoot进行介绍。SpringBoot是Spring一套快速配置开发的脚手架,可以基于SpringBoot快速集成开发单个Spring应用。SpringCloud是基于Spr 查看详情

微服务从0开始springboot简单搭建一个微服务项目

...服务,一起学习一起进步。👀本期介绍主要介绍Springboot与SpringCloud的关系 查看详情

百度微服务架构师随手笔记:教你如何手写docker

模拟Docker实现一个简单的容器,不到200行代码(包括空行、注释、异常处理),这并不是吹牛B。容器技术几乎是Linuxkernel内置的模块,我们简单调用一下API就能搞定很多事情。当然你要考虑各种商业因素、政治因素那就会成长为... 查看详情

从springcloud看一个微服务框架的「五脏六腑」(代码片段)

...:https://webfe.kujiale.com/spring-could-heart/SpringCloud是一个基于SpringBoot实现的微服务框架,它包含了实现微服务架构所需的各种组件。注:SpringBoot简单理解就是简化Spring项目的搭建、配置、组合的框架。因为与构建微服务本身没有直... 查看详情

java之springcloud微服务eureka(第一个阶段)springboot项目实现商品服务器端是调用

...ava之SpringCloud微服务搭建(第一个阶段)【一】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务Eureka(第一个阶段)【二】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务搭建Ribbonÿ 查看详情

手写源码-设计模式10-外观模式-基于多个微服务调用实现下单(代码片段)

1:主题拆解①基本介绍②多个微服务调用实现下单③外观模式的优缺点④适用场景⑤应用实例2:基本介绍外观模式:外部与一个子系统的通信通过一个统一的外观角色进行,为子系统中的一组接口提供一个一致... 查看详情

java之springcloud微服务搭建consul(第一个阶段)springboot项目实现商品服务器端是调用(代码片段)

...ava之SpringCloud微服务搭建(第一个阶段)【一】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务Eureka(第一个阶段)【二】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务搭建Ribbonÿ 查看详情

java之springcloud微服务的开源配置中心apollo(第四个阶段)springboot项目实现商品服务器端调用(代码片段)

...ava之SpringCloud微服务搭建(第一个阶段)【一】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务Eureka(第一个阶段)【二】【SpringBoot项目实现商品服务器端是调用】Java之SpringCloud微服务搭建Ribbon࿰... 查看详情

阿里云产品专家解读链路追踪(tracinganalysis)

摘要:概要阿里云上最近推出了一款新产品链路追踪,专注于帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率。分布式应用环境下的链路追踪,并不是一个新话题。在早些时间,阿里... 查看详情

maven+springboot搭建简单微服务

项目需要使用springboot,所以自学了几天,仅提供给新手,请根据文档查看…该项目仅是测试项目,并不完善和严谨,只实现了需要使用的基本功能。写该博客一是希望能够帮助刚学习的新人,二是加深自... 查看详情

手写一个网关服务,理解更透彻!(代码片段)

...我们在工作中经常会需要处理http请求,通常都是基于SpringBoot应用直接接受外界的http请求,就如同下方的流程图所示:但是随着后台应用的增加,可以调用的节点数目也慢慢变多,因此这个时候就需要有一个... 查看详情

基于springcloud的微服务构建学习-2springboot

基于SpringCloud的微服务构建学习-2SpringBoot为什么使用SpringBoot而不是Spring  SpringBoot具有自动化配置,快速开发,轻松部署优点,非常适合用作微服务架构中各项具体微服务的开发框架。它不仅可以帮助我们快速的构建微服务,... 查看详情

springboot整合springcloudnacos实现配置管理和服务发现(代码片段)

微服务注册中心现在常用的主流有三个Nacos,Eureka与ZooKeeperNacos是阿里开源的,Nacos支持基于DNS和基于RPC的服务发现。在SpringCloud中使用Nacos,只需要先下载Nacos并启动Nacosserver,Nacos只需要简单的配置就可以完成服务的注... 查看详情

springboot整合springcloudnacos实现配置管理和服务发现(代码片段)

微服务注册中心现在常用的主流有三个Nacos,Eureka与ZooKeeperNacos是阿里开源的,Nacos支持基于DNS和基于RPC的服务发现。在SpringCloud中使用Nacos,只需要先下载Nacos并启动Nacosserver,Nacos只需要简单的配置就可以完成服务的注... 查看详情

微服务架构的简单实现-stardust

微服务架构,一个当下比较火的概念了。以前也只是了解过这方面的概念,没有尝试过。想找找.NET生态下面是否有现成的实现,可是没找到,就花了大半个月的闲暇时间,遵循着易用和简单,实现了一个微服务框架,我叫它Stard... 查看详情

springcloud简介

SpringCloud简介SpringCloud是一个基于SpringBoot实现的微服务架构开放工具。它为微服务架构中设计的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简... 查看详情

71nacos实现微服务的注册与发现

...,分布式配置中心SpringCloudEureka+cnfig组合2,目的为了推广阿里云产品,如果使用了SpringCloudAlibaba建议最好使用整个体系的产品。mq,rocketmq总结:SpringcloudAlibaba实际上对我们的SpringCloud做扩展组件开发nacos,setata分布式解决框架,Sch... 查看详情