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

山东网站建设哪里好网站做多久

山东网站建设哪里好,网站做多久,长春seo培训,福州家园网一、什么是 SPI SPI 全名 Service Provider interface#xff0c;翻译过来就是“服务提供接口”。基本效果是#xff0c;申明一个接口#xff0c;然后通过配置获取它的实现#xff0c;进而实现动态扩展。 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.priority1插件代码示例相当于为整个 “模块” 提供了一个生命周期。把上面 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.hkea.cn/news/14339186/

相关文章:

  • 南宁网站快速排名提升众筹 wordpress
  • 国际站wap端流量建设网站需要营业执照吗
  • 网站建设询价嘉兴网站公司
  • 付费资料网站开发罗村建网站
  • 邯郸网站制chrome打开建设银行网站 个人网上银行怎么不能查询明细
  • 如何建电子商务网站平台网站建设报价
  • 建设工程交易中心网站收费标准学会网站建设三方协议
  • 属于自己的网站哪个网站注册域名
  • 北京品牌网站建设公司哪家好公司官网开发
  • 安徽建设银行招聘网站fm网站开发
  • 柳州建设厅官方网站中国工程建设信息网官网查询
  • 邢台做网站石家庄企业logo设计
  • 网站建设与运营固定资产最好的企业网站源码
  • 有哪些外贸公司网站做的比较好邢台网站维护
  • 网站管理员登陆不了网站建设中所涉及的所有链接建设
  • 昆明婚恋网站价格内蒙古做网站的公司
  • 三合一网站一般多少钱网站设计费用志
  • 网站上做网页怎么改图片公司名称大全四个字
  • 织梦网站怎么做安全措施微网站获取访客手机
  • 推荐中山精品网站建设做网站用哪种编程语言
  • 个人做加盟商机网站如何盈利网站建设黄页免费观看
  • wordpress centos7石家庄seo网站优化
  • 单位网站建设情况说明书wordpress判断使用不同模板
  • 查询建设用地规划许可证在哪个网站汉中建设网站
  • 电子商务网站开发公司企业网站必须备案
  • 简要列举网站常见类型网站建设的资源整合与系统设计
  • 网站设计公司兴田德润信任高wordpress 前台不显示
  • gta5资产网站正在建设有没有会计做兼职的网站
  • 太原网站建设策划方案降低生育
  • 有了网站开发app是不是更容易网站设计技术有哪些?