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框架中,负责身份验证.服务规则和服务令牌的功能, ...
最新文章
- 电脑内存和磁盘空间有什么区别与联系
- python 装饰器实现事件绑定_Python装饰器是怎么实现的?
- [Codeforces Round #194 (Div. 2)] Secret 解题报告 (数学)
- Spring autowire 自动装配简介
- vlan之间互相访问_VLAN的划分和网络的配置实例
- java.lang.ClassCastException: cannot assign instance of java.lang.invoke.SerializedLambda to field
- IDEA开发中,类的头位置生成作者时间信息
- oracle拆分分区语法详解大全_Oracle hash的分区方法详解
- 老男孩python全栈开发视频教程_老男孩Python全栈开发(92天全)视频教程 自学笔记08...
- java基础----Java中枚举的使用(一)
- java 模拟qq源码
- 机械制图中外螺纹的画法_机械制图基础知识之图样简化画法
- 网站转移服务器,网站转移云服务器
- Go语言与数据库开发:01-02
- RestTemplate 发送 get 请求使用误区 多值为null
- Graham 三参数表示法 详解
- 机器学习- 吴恩达Andrew Ng Week6 Regularized Linear Regression and Bias/Variance知识总结
- android 文件管理 免root,真正免root的RE文件管理器(Root Explorer)详细使用教程
- 华为(H3C)visio图库,是完全版的包括PPT格式与VISIO格式
- 互联网晚报 |11/24 星期四 | 比亚迪涨价2000到6000元不等;苹果15或告别纯直边;星巴克回应0.01元抢券不兑换...