当前位置: 首页 > news >正文

丽江建设工程信息网站东莞市做网站的公司

丽江建设工程信息网站,东莞市做网站的公司,seo网络搜索引擎优化,哪些网站可以做百科参考资料一、什么是 SPI SPI 全名 Service Provider interface,翻译过来就是“服务提供接口”。基本效果是,申明一个接口,然后通过配置获取它的实现,进而实现动态扩展。 Java SPI 是 JDK 内置的一种动态加载扩展点的实现。 一般的业务代…

一、什么是 SPI

SPI 全名 Service Provider interface,翻译过来就是“服务提供接口”。基本效果是,申明一个接口,然后通过配置获取它的实现,进而实现动态扩展。

Java SPI 是 JDK 内置的一种动态加载扩展点的实现。

一般的业务代码中较少用到,但是在底层框架中却大量使用,包括 JDBC、Dubbo、Spring、Solon、slf4j 等框架都有用到,不同的是有的使用 Java 原生的实现,有的框架则自己实现了一套 SPI 机制.

二、Spring SPI

Spring 中的 SPI 相比于 JDK 原生的,它的功能更强大些,它可以替换的类型不仅仅局限于接口/抽象类,它可以是任何一个类,接口,注解;

正因为 Spring SPI 是支持替换注解类型的 SPI,这个特性在 Spring Boot 中的自动装配有体现(EnableAutoConfiguration注解):

Spring 的 SPI 配置文件,需要放在工程的 META-INF 下,且文件名为 spring.factories ,而文件的内容本质就是一个 properties;如 spring-boot-autoconfigure 包下的 META-INF/spring.factories 文件,用于自动装配的。

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration, \
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration, \
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration, \
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration, \
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration, \
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,

三、Solon SPI

相对于 Java SPI 和 Spring SPI 的“配置式”风格。Solon SPI 则是 “编码式” 风格。就有点儿像 Maven 和 Gradle。Solon SPI,也称为 Solon Plugin SPI。 同样需要一个配置文件,来申明 Plugin 的实现类。

约定插件配置文件,且要求文件名是唯一的:

#建议使用包做为文件名,便于识别,且可避免冲突
META-INF/solon/{packname}.properties

约定插件配置内容(就固定的两项):

#插件实现类配置
solon.plugin={PluginImpl}  
#插件优化级配置。越大越优先,默认为0
solon.plugin.priority=1

插件代码示例(相当于,为整个 “模块” 提供了一个生命周期)。把上面 Spring SPI 的配置翻译过来就是:

public class SpringTranslatePlugin implements Plugin{@Overridepublic void start(AppContext context) {//插件启动时...context.beanMake(SpringApplicationAdminJmxAutoConfiguration.class);context.beanMake(AopAutoConfiguration.class);context.beanMake(RabbitAutoConfiguration.class);context.beanMake(BatchAutoConfiguration.class);context.beanMake(CacheAutoConfiguration.class);context.beanMake(CassandraAutoConfiguration.class);}@Overridepublic void prestop() throws Throwable {//插件预停止时(启用安全停止时:预停止后隔几秒才会进行停止)}@Overridepublic void stop(){//插件停止时}
}

因为是 “编码式” 的。所以也可以做更复杂的控制处理。比如:

public class SolonDataPlugin implements Plugin {@Overridepublic void start(AppContext context) {//注册缓存工厂CacheLib.cacheFactoryAdd("local", new LocalCacheFactoryImpl());//添加事务控制支持if (context.app().enableTransaction()) {context.beanInterceptorAdd(Tran.class, TranInterceptor.instance, 120);}//添加缓存控制支持if (context.app().enableCaching()) {CacheLib.cacheServiceAddIfAbsent("", LocalCacheService.instance);context.subWrapsOfType(CacheService.class, new CacheServiceWrapConsumer());context.lifecycle(() -> {if (context.hasWrap(CacheService.class) == false) {context.wrapAndPut(CacheService.class, LocalCacheService.instance);}});context.beanInterceptorAdd(CachePut.class, new CachePutInterceptor(), 110);context.beanInterceptorAdd(CacheRemove.class, new CacheRemoveInterceptor(), 110);context.beanInterceptorAdd(Cache.class, new CacheInterceptor(), 111);}//自动构建数据源Props props = context.cfg().getProp("solon.dataSources");if (props.size() > 0) {context.app().onEvent(AppPluginLoadEndEvent.class, e -> {//支持 ENC() 加密符VaultUtils.guard(props);buildDataSource(context, props);});}}
}
http://www.yayakq.cn/news/778364/

相关文章:

  • 做网站后台的时候要注意什么福州专业网站搭建排名
  • 公司做网站所上传的产品图片eclipse开发网站用vue做前端
  • 做八年级题目的网站怎样免费设计logo
  • 房产手机网站模板周口网站建设电话
  • php网站开发实例教程 课件一键网站建设
  • 龙华做手机网站微信网站搭建哪家好
  • 发外链的网站都要企业注册汕头网站网站建设
  • 永康门业微网站建设wordpress手机上图片
  • 去哪里建设自己的网站?合肥电信网站备案
  • 网站建设前台和后台设计玉树营销网站建设公司
  • 网站建设常用字体可信网站标志
  • 昆山网页网站制作品牌型网站建设特点
  • 东莞设计兼职网站建设网页视频下载不了怎么办
  • 青海省教育厅门户网站官网wordpress 文章字符数
  • 家居网站建设如何wordpress 替换头像
  • 大沥网站制作怎样下载做网站的软件
  • php中做购物网站的教程个人怎么建设网站
  • 陕西宝陵建设集团网站增城免费网站建设
  • 欧美租车公司网站模板1psd合肥网站建设设计外包
  • 网站建设网站软件有哪些方面化妆品网站制作
  • 青岛城市建设集团网站流量多网站
  • 1元建网站可以做ppt的网站
  • 网站开发完以后交付源代码12380网站建设情况的报告
  • 求个没封的a站2022青岛手机网站制作
  • 网站tag聚合怎么做东莞网站建设推广公司哪家好
  • 网站首图怎么做品牌服务推广
  • 网站维护一次多少钱网站建设 面试问题
  • 招聘网站花钱做的简历有用没led灯什么网站做推广好
  • 网站网络营销推广做药物研发的人上什么网站
  • 网站建设的数据库设计图ps网页设计培训