public interface IChannelFactoryService {
/**
* 发送验证码
* @param channelCode 类型
*/
void sendAuthCode(String channelCode);
}
@Service
public class ChannelFactoryServiceImpl implements IChannelFactoryService {
@Resource
private ChannelBeanFactory channelBeanFactory;
@Override
public void sendAuthCode(String channelCode){
if (StrUtil.isEmpty(channelCode)) {
throw new Exception("异常");
}
AuthCodeFacade authCodeFacade = (AuthCodeFacade) channelBeanFactory.getService(channelCode);
authCodeFacade.sendAuthCode(channelCode);
}
}
public interface AuthCodeFacade {
/**
* 发送验证码
* @return
*/
void sendAuthCode(String channelCode);
}
@Service("channelCode")
public class SendMailServiceImpl implements AuthCodeFacade {
@Override
public void sendAuthCode(String channelCode) {
xxx
xxx
}
}
工厂
@Component("channelBeanFactory")
public class ChannelBeanFactory implements BeanFactoryAware {
private BeanFactory beanFactory;
/**
* 根据通道编码获取具体实体类
*
* @param channelCode 通道编码
* @return
*/
public Object getService(String channelCode) {
return beanFactory.getBean(channelCode);
}
public <T> T getService(String name, Class<T> requiredType) {
return beanFactory.getBean(name, requiredType);
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
}