uedbet西甲赫塔菲官网
SpringFactoriesLoader工厂加载机制是Spring内部提供的一个约定俗成的加载方式,与java spi类似,只需要在模块的META-INF/spring.factories文件以规定的格式来描述key和value的值,key是接口、注解、或抽象类的全名,value是以逗号分隔的实现类。例如,MyService=example.MyServiceImpl1,example.MyServiceImpl2
where example.MyService是接口, MyServiceImpl1和MyServiceImpl2是两个实现类。最后通过loadFactories方法加载和uedbet官网西甲赫化给定类型的对象。
uedbet西甲赫塔菲官网
Service Provider Interface(SPI) 是java语言中一种服务发现机制,其本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,ServiceLoader.load()
加载实现类,最终实现在运行时动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。
在开发过程中,将问题抽象成API,可以为API提供各种实现。如果现在需要对API提供一种新的实现,我们可以不用修改原来的代码,直接生成新的Jar包,在包里提供API的新实现。通过Java的SPI机制,可以实现了框架的动态扩展,让第三方的实现能像插件一样嵌入到系统中。
uedbet西甲赫塔菲官网
BeanDefinition主要功能是允许BeanFactoryPostProcessor (例如:PropertyPlaceHolderConfigure)等检索并修改属性值和别的bean的元数据
正文
在Spring中,我们将对象交给容器进行管理,容器会uedbet官网西甲赫化这些对象,完成依赖注入等操作,原始的类uedbet官网西甲赫解析的内容就是BeanDefinition。
BeanDefinition的定义
BeanDefinition 是一个接口,继承了AttributeAccessor和BeanMetadataElement。