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

热门文章

  1. Mysql学习代码笔记
  2. 互联网行业,回暖了?
  3. P4学习——p4runtime
  4. matlab图像处理英文文献,数字图像处理英文文献翻译参考.doc
  5. 哈希表、红黑树、B树、B+树基础
  6. 基于QUIC 协议的HTTP/3
  7. 【PAT乙级】1009 说反话
  8. 普通学校,我是该打ACM还是做项目?
  9. .xyz文件的定义及读取
  10. 法线向量如何归一化(Normalize)