1、定义自定义spring工厂bean
package com.example.common.factory;
import com.bozhong.nursestaff.service.MessageReminderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 消息提醒工厂
**/
@Component
public class MessageReminderFactory {
public static final String TODO_REMINDER_SERVICE = "todoReminderService";
@Autowired
private Map<String, MessageReminderService> serviceMap;
public MessageReminderService getService(String service){
return serviceMap.get(service);
}
}
2、定义service接口
package com.example.service;
import com.bozhong.nursestaff.dto.basics.response.MessageReminderRespDTO;
import java.util.List;
/**
* 消息提醒Service
**/
public interface MessageReminderService {
List<MessageReminderRespDTO> getReminderList();
}
3、定义service实现特定工厂类
package com.example.service.impl;
import com.bozhong.nursestaff.dto.basics.response.MessageReminderRespDTO;
import com.example.service.MessageReminderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* 待办提醒
**/
@Service("todoReminderService")
public class TodoReminderServiceImpl implements MessageReminderService {
@Override
public List<MessageReminderRespDTO> getReminderList() {
List<MessageReminderRespDTO> list = new ArrayList<>();
// 业务逻辑略.....
return list;
}
}
4、注入工厂并调用指定工厂业务方法
@Autowired
private MessageReminderFactory messageReminderFactory;
MessageReminderService todoReminderService = messageReminderFactory.getService(MessageReminderFactory.TODO_REMINDER_SERVICE);
todoReminderService.getReminderList();
// 后续扩展其他消息提醒service
MessageReminderService otherReminderService = messageReminderFactory.getService(MessageReminderFactory.OTHER_REMINDER_SERVICE);
otherReminderService.getReminderList();