client Sdk学习

spring.factories

在Spring Boot中有一种非常解耦的扩展机制:Spring Factories,这种扩展机制实际上是仿照Java中的SPI扩展机制来实现的。
spring.factories文件是帮助spring-boot项目包以外的bean(即在pom文件中添加依赖中的bean)注册到spring-boot项目的spring容器。由于@ComponentScan注解只能扫描spring-boot项目包内的bean并注册到spring容器中,因此需要@EnableAutoConfiguration注解来注册项目包外的bean。而spring.factories文件,则是用来记录项目包外需要注册的bean类名。

用途

可用于加载一个Spring 不能扫描到的一个类,他可以是第三方的,也可以是自己写的,只要是Spring Boot 默认扫描路径不能够扫描到,都可以使用这种方式去加载!!!

SPI

  1. Interface接口
  2. provider定义与实现
  3. loader加载器
  4. 应用jdbc

约定

当服务的提供者,提供了服务接口的一种实现之后,需在项目的classpath下的META-INF/spring.factories文件中配置该接口的实现类名称,以便程序读取配置文件来实例化。

org.springframework.context.ApplicationContextInitializer=com.yue.test.CustomApplicationContextInitializer

Spring Factories实现原理

spring-core包里定义了SpringFactoriesLoader类,这个类实现了检索META-INF/spring.factories文件,并获取指定接口的配置的功能。在这个类中定义了两个对外的方法

  1. loadFactories。根据接口类获取其实现类的实例,这个方法返回的是对象列表.

  2. loadFactoryNames。根据接口获取其接口类的名称,这个方法返回的是类名的列表。

  3. 使用场景
    加载第三方Bean
    方法一:使用@Import注解;
    方法二:在META-INF/spring.factories文件中配置

@EnableAutoConfiguration

让我们的starter里的@Configuration在使用者的项目里生效呢

  • @EnableAutoConfiguration
    注解加载的是资源目录META-INF文件下的spring.factories的文件。包括导入到项目中的Jar包的META-INF文件夹下的spring.factories文件。spring.factories文件是一个properties文件。
  • @ComponentScan
    注解的作用是扫描@SpringBootApplication所在的Application类(即spring-boot项目的入口类)所在的包(basepackage)下所有的@component注解(或拓展了@component的注解)标记的bean,并注册到spring容器中。

应用

开发api成sdk时,使用sdk的第三方不需要主动扫描MyClientAutoConfiguration.class(即在application上添加注解@EnableAutoConfiguration),只需要在打包成sdk的工程spring.factories中配置如下,其它项目在导入我的这个Jar的时候,会去加载MyClientAutoConfiguration

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xx.client.config.MyClientAutoConfiguration

原文链接:https://blog.csdn.net/yanluandai1985/article/details/106574073
原文链接:https://blog.csdn.net/SkyeBeFreeman/article/details/96291283

client Sdk相关推荐

  1. fastdfs java client_GitHub - happyfish100/fastdfs-client-java: FastDFS java client SDK

    FastDFS java client SDK FastDFS Java Client API may be copied only under the terms of the BSD licens ...

  2. oracle 11g sdk,OCI和Instant Client SDK和Oracle数据库

    抱歉,这个问题太幼稚了,但对于我在该主题上的经历也是如此. 从谷歌搜索我所了解的内容,我只是想确认该理解是正确的.欢迎大家查明我错了. > OCI基本上是一组API,供C/C++程序员用来编写C ...

  3. Nacos client SDK 订阅式请求坑

    一.场景复现 (1)业务需求 在不同的nacos注册集群,不同的namespace,由页面发起查询nacos集群上注册的服务实例ip. (2)故障现象 nacos集群配置推送push超时,查看naco ...

  4. android点对点 sdk,Client(SDK)_开发文档_容联云通讯

    Demo & SDK下载 云通讯平台为开发者提供多语言Demo,让您可以轻松地选择你熟悉的编程语言来体验.以下是官方提供的Demo,这些Demo都是开源的,如果你发现错误,我们欢迎你的反馈,同 ...

  5. Fate Flow Client SDK 指南

    路径 用法 from flow_sdk.client import FlowClient # use real ip address to initialize SDK client = FlowCl ...

  6. 转:RemObjects SDK 简介

    随着各家厂商的强力背书与推销,Web Services 俨然成为未来分布式系统开发的主流架构,但是Web Services 至今仍然存在一些问题,其中有些是属于规格的问题,有些则是先天上的限制,许多使 ...

  7. 微软codepush搭建服务器,通过 CodePush API 参考对本机 SDK 作出响应 - Visual Studio App Center | Microsoft Docs...

    响应 Native Client SDK API 参考 02/19/2020 本文内容 CodePush 插件由以下两个组件组成: 可以导入/要求的 JavaScript 模块,并允许应用在运行时与服 ...

  8. NodeMedia / NodeMediaClient-Android(一个简单,快速,免费的直播SDK)

    NodeMedia RTMP/RTMFP/RTSP/HTTP Play/Publish Client SDK for Android 用Gradle导入 allprojects {repositori ...

  9. python keystone_keystone命令与client接口学习

    keystone学习 ------------------ Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, ...

最新文章

  1. winpcap4.1.2手动清理关键
  2. 首次使用gradle出现Could not find method leftShift() for arguments解决办法
  3. 利用 MySQL bin-log 恢复数据表
  4. 关于ASP.NET未能映射路径问题
  5. 「BJOI2019」奥术神杖(AC自动机+DP)
  6. PostgreSQL的安装和启动方法大全
  7. Docker 快速安装 Mongodb
  8. python字典和集合对象可以进行索引操作_建议收藏丨纯知识点:Python基础—字典、集合操作大全...
  9. 项目心得--我的尺寸测量项目
  10. 海姆霍兹获3000万元A轮融资,投资方为国科嘉和
  11. iOS启动动画效果实现
  12. java实验报告_java实验报告完整版.pdf
  13. Linux下如何修改ini文件,如何修改Boot.ini文件,重新引导Linux!
  14. VS语音信号处理(1) C语言读取WAV语音文件文件头数据
  15. 数字图像处理_冈萨雷斯
  16. 快速添加百度网盘文件到Aria2 猴油脚本
  17. 跟着小马哥学系列之 Spring AOP(AbstractAutoProxyCreator 详解)
  18. daytime协议的服务器和客户端程序,用Socket套接字实现DAYTIME协议的服务器和客户端程序-20210414073352.docx-原创力文档...
  19. 接口自动化测试框架(一):框架介绍
  20. 第五人格服务器正在维护中怎么办,第五人格新联动刚来就出问题,紧急停服维护,这得补偿多少?...

热门文章

  1. html5如何快速选择工具使用技巧,用PS快速选择工具抠图的方法
  2. P4 Tutorial 安装
  3. 图像超分辨率简单介绍
  4. [计算机网络]HTTP、UDP、TCP协议
  5. 温室大棚冬季增温方案,适合自己的才最好
  6. 【润乾报表2018】如何为参数报表增加重置功能
  7. Java计算两个时间段内的工作日天数
  8. 你还分不清谐波失真、总谐波失真、总谐波失真加噪声吗?
  9. 笔记1之极大值分布问题
  10. Unity框架——MVC框架