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

天津自己制作网站百度网盘app免费下载安装老版本

天津自己制作网站,百度网盘app免费下载安装老版本,phpcms 移动网站模板,网站设计青岛SPI spi : service provider interface : 是java的一种服务提供机制,spi 允许开发者在不修改代码的情况下,为某个接口提供实现类,来扩展应用程序 将实现类独立到配置文件中,通过配置文件控制导入&#xff…
SPI

spi : service provider interface : 是java的一种服务提供机制,spi 允许开发者在不修改代码的情况下,为某个接口提供实现类,来扩展应用程序

在这里插入图片描述
将实现类独立到配置文件中,通过配置文件控制导入:

在这里插入图片描述

 public static void main(String[] args) {ServiceLoader<Animal> load = ServiceLoader.load(Animal.class);for (Animal animal : load) {animal.sound();}}

就会导入Animal的两个实现类

问题:

  • spi 和一般的面向接口变成有什么区别?,,使用spi导入和直接用,不是一样的吗
    • 动态加载实现类
      在一般的面向接口变成中,通常需要显示的创建实现类,,,通过spi机制,可以在运行时动态加载实现类,无需在代码中指定具体的实现类,代码更加灵活可扩展
    • 配置文件
      一般在面向接口编程中,通常在代码中显示的指定具体的实现类,,显示的注入实现类,,而spi使用配置文件 META-INF/services 指定接口实现类,如果要新增或者切换实现类,那么只需要修改配置文件即可,,

spi使得应用程序设计,更具灵活性,模块化,可扩展性,,它通过动态加载实现类,解耦接口和实现,以及使用配置文件来实现这些特性,,从而使得应用程序更加智能的加载,和使用模块

springboot自动装配

springboot自动装配是 SPI 思想的一种应用

@SpringbootApplication : 声明这个类是个引导类,或者叫 配置类
是一个复合注解

  • @SpringbootConfiguration
  • @ComponentScan : 扫描当前包下 及其子包的 @Component 标记的类
  • @EnableAutoConfiguration

自动装配里面用了 @Import 和 ImportSelector接口,,

@Import和ImportSelector使用

创建了一个配置类 :

@Configuration
public class MyConfig {@Beanpublic Watermelon watermelon(){return new Watermelon();}
}

可以使用 @Import(MyConfig.class) 直接导入配置类,

//@ComponentScan
//    @Import(MyConfig.class)@Import(FruitConfigurationSelector.class)
public class FruitApplication {public static void main(String[] args) {// 默认启动web服务器,@ComponentScan会去扫web服务器ConfigurableApplicationContext context = new SpringApplicationBuilder(FruitApplication.class).web(WebApplicationType.NONE)  // 关闭web服务器.run(args);Watermelon watermelon = (Watermelon) context.getBean("watermelon");System.out.println("watermelon = " + watermelon);}
}

也可以使用 @Import 导入 ImportSelector 的实现类,,这个实现类返回一个数组,表示要注入的bean的全限定类名的集合

public class FruitConfigurationSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {return new String[]{MyConfig.class.getName()};}}
@EnableXXXAutoConfiguration

写一个注解,在这个注解上面,使用@Import 导入若干要导入的Bean,,
为什么要有@EnableXXXAutoConfiguration : 模块装配 ,如果同时需要几个模块,使用@EnableXXXAutoConfiguration 装配整合成一个

springboot中@EnableAutoConfiguration

在这里插入图片描述
ImportSelector 中的 selectImports方法 去导入bean,,
getCandidateConfigurations方法 去加载 spring.factories 中的配置,,预选配置再根据@Conditional去判断哪些要注入容器
在这里插入图片描述

在这里插入图片描述

http://www.hrbkazy.com/news/32144.html

相关文章:

  • 网站模板 html5零基础学seo要多久
  • 设计手机网站建设百色seo快速排名
  • 河北网站制作全网营销软件
  • win怎么开做网站其他端口网站推广郑州
  • 打开b站看直播优化排名工具
  • 青岛做网站今日头条最新版
  • 有没有教做熟食的网站seo中心
  • 网站建设与管理怎么样seo哪家强
  • 做网站是怎么赚钱吗南京今天重大新闻事件
  • 建设申请网站广东企业网站seo哪里好
  • 高性能网站建设进行指南产品营销软文
  • 网站备案被删除百度关键词排名推广
  • 做网站论坛长沙百度地图
  • 网站建设惠州免费crm网站不用下载的软件
  • dw做网站链接数据库网站建设需要多少钱?
  • 茂名中小企业网站制作网络营销可以做什么工作
  • 2018做网站的软件seo的搜索排名影响因素主要有
  • metinfo 建站营销策划公司介绍
  • 上海做软件安卓aso优化
  • 网站如何悬挂备案号网络零售的优势有哪些
  • 网站建设公司论坛seo外链发布
  • 模板网站好优化吗免费网络推广100种方法
  • seo关键词优化推广信息流优化师面试常见问题
  • 如何上传图片到网站网络营销专业怎么样
  • 安徽网站优化价格咨询企业推广策划方案
  • 企业门户网站建设的意义百度站长工具收费吗
  • 临朐网站建设建站网络营销的主要工作有哪些
  • 为自己做的网站申请域名网络推广seo怎么做
  • 免费微网站系统源码谷歌ads
  • 农产品网站如何做地推seo优化前景