在日常开发过程中经常需要获取类的扩展集。即获取类的子类集(抽象类),或者接口实现类。比如说状态模式中,状态构建类,策略模式中的,策略构造方式。本文介绍几种获取方式。
以策略模式为例 定义了2种策略
interface Handle
,实现类 ApproveHandle
、 RefuseHandle
Spring为java web开发提供了很多便捷,这么刚需的需求,Spring当然可以搞定 ListableBeanFactory
扩展了FactoryBean,自然能够获取bean的定义,所以可以从ApplicationContext获取类的扩展类
Spring提供了很多的扩展,允许我们在初始化bean之前,之后做一些自定义逻辑。当然也可以在Spring装配整个过程完成后做一些注入的逻辑
离了Spring还能不能活,当然可以了。jdk本身提供了扩展支持 ServiceLoader
类。
META-INF/services配置类
ServiceLoader.load
这边是以接口类来介绍的,对于接口也同样适用。完整代码见github