client Sdk
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
- Interface接口
- provider定义与实现
- loader加载器
- 应用jdbc
约定
当服务的提供者,提供了服务接口的一种实现之后,需在项目的classpath下的META-INF/spring.factories文件中配置该接口的实现类名称,以便程序读取配置文件来实例化。
org.springframework.context.ApplicationContextInitializer=com.yue.test.CustomApplicationContextInitializer
Spring Factories实现原理
spring-core包里定义了SpringFactoriesLoader类,这个类实现了检索META-INF/spring.factories文件,并获取指定接口的配置的功能。在这个类中定义了两个对外的方法
loadFactories。根据接口类获取其实现类的实例,这个方法返回的是对象列表.
loadFactoryNames。根据接口获取其接口类的名称,这个方法返回的是类名的列表。
使用场景
加载第三方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相关推荐
- 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 ...
- oracle 11g sdk,OCI和Instant Client SDK和Oracle数据库
抱歉,这个问题太幼稚了,但对于我在该主题上的经历也是如此. 从谷歌搜索我所了解的内容,我只是想确认该理解是正确的.欢迎大家查明我错了. > OCI基本上是一组API,供C/C++程序员用来编写C ...
- Nacos client SDK 订阅式请求坑
一.场景复现 (1)业务需求 在不同的nacos注册集群,不同的namespace,由页面发起查询nacos集群上注册的服务实例ip. (2)故障现象 nacos集群配置推送push超时,查看naco ...
- android点对点 sdk,Client(SDK)_开发文档_容联云通讯
Demo & SDK下载 云通讯平台为开发者提供多语言Demo,让您可以轻松地选择你熟悉的编程语言来体验.以下是官方提供的Demo,这些Demo都是开源的,如果你发现错误,我们欢迎你的反馈,同 ...
- Fate Flow Client SDK 指南
路径 用法 from flow_sdk.client import FlowClient # use real ip address to initialize SDK client = FlowCl ...
- 转:RemObjects SDK 简介
随着各家厂商的强力背书与推销,Web Services 俨然成为未来分布式系统开发的主流架构,但是Web Services 至今仍然存在一些问题,其中有些是属于规格的问题,有些则是先天上的限制,许多使 ...
- 微软codepush搭建服务器,通过 CodePush API 参考对本机 SDK 作出响应 - Visual Studio App Center | Microsoft Docs...
响应 Native Client SDK API 参考 02/19/2020 本文内容 CodePush 插件由以下两个组件组成: 可以导入/要求的 JavaScript 模块,并允许应用在运行时与服 ...
- NodeMedia / NodeMediaClient-Android(一个简单,快速,免费的直播SDK)
NodeMedia RTMP/RTMFP/RTSP/HTTP Play/Publish Client SDK for Android 用Gradle导入 allprojects {repositori ...
- python keystone_keystone命令与client接口学习
keystone学习 ------------------ Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, ...
最新文章
- winpcap4.1.2手动清理关键
- 首次使用gradle出现Could not find method leftShift() for arguments解决办法
- 利用 MySQL bin-log 恢复数据表
- 关于ASP.NET未能映射路径问题
- 「BJOI2019」奥术神杖(AC自动机+DP)
- PostgreSQL的安装和启动方法大全
- Docker 快速安装 Mongodb
- python字典和集合对象可以进行索引操作_建议收藏丨纯知识点:Python基础—字典、集合操作大全...
- 项目心得--我的尺寸测量项目
- 海姆霍兹获3000万元A轮融资,投资方为国科嘉和
- iOS启动动画效果实现
- java实验报告_java实验报告完整版.pdf
- Linux下如何修改ini文件,如何修改Boot.ini文件,重新引导Linux!
- VS语音信号处理(1) C语言读取WAV语音文件文件头数据
- 数字图像处理_冈萨雷斯
- 快速添加百度网盘文件到Aria2 猴油脚本
- 跟着小马哥学系列之 Spring AOP(AbstractAutoProxyCreator 详解)
- daytime协议的服务器和客户端程序,用Socket套接字实现DAYTIME协议的服务器和客户端程序-20210414073352.docx-原创力文档...
- 接口自动化测试框架(一):框架介绍
- 第五人格服务器正在维护中怎么办,第五人格新联动刚来就出问题,紧急停服维护,这得补偿多少?...