Spring通过注解优雅实现工厂模式
import org.springframework.beans.factory.config.AbstractFactoryBean;
import org.springframework.stereotype.Component;
// 假设存在一个接口和实现类
interface MyServiceInterface {
void doSomething();
}
class MyServiceImpl implements MyServiceInterface {
@Override
public void doSomething() {
// 实现细节
}
}
// 使用Spring的FactoryBean接口来创建MyServiceImpl的实例
class MyServiceFactoryBean extends AbstractFactoryBean<MyServiceInterface> {
@Override
public Class<?> getObjectType() {
return MyServiceImpl.class;
}
@Override
protected MyServiceInterface createInstance() throws Exception {
return new MyServiceImpl();
}
}
// 将FactoryBean定义为Spring的bean
@Component
public class MyServiceFactoryBeanConfig {
@Bean
public MyServiceFactoryBean myServiceFactoryBean() {
return new MyServiceFactoryBean();
}
}
这个例子展示了如何使用Spring框架的AbstractFactoryBean
类来创建一个可注册为Spring bean的工厂bean。这样可以通过注入这个bean来获取MyServiceImpl
的实例,而不是直接注入MyServiceImpl
类本身。这种方式可以在不修改MyServiceImpl
代码的情况下,灵活地通过工厂模式来创建或管理实例。
评论已关闭