一,service代码实现类,可以看到UserService继承了AbstractUserService。AbstractUserService主要用于定义不同业务类型中的相同业务操作方法。例如在用户和客服服务中都存在添加用户,删除用户,修改用户信息等操作。
@Service(value = "userSerive")
public class UserSerive extends AbstractUserService{
@Autowired
private IUserInfoService userInfoService;
@Override
public void addUser(String userId) {
UserInfo userInfo = new UserInfo();
userInfo.setUserId(userId);
userInfo.setUserSex("11");
userInfoService.save(userInfo);
}
}
二,AbstractUserService 类,主要定义业务方法。
public abstract class AbstractUserService {
public void addUser(String userId){};
}
三,UserFactoryContent 工厂类,实现AbstractUserService类的选择。
@Component(value = "userFactoryContent")
public class UserFactoryContent {
@Autowired
public final Map<String,AbstractUserService> factory = new ConcurrentHashMap<>();
public AbstractUserService getAbstractUserService(String userType){
UserServiceEnum userServiceEnum = UserServiceEnum.valuesOf(userType);
return factory.get(userServiceEnum.getUserServiceName());
}
}
四,UserServiceEnum枚举类,实现请求中用户类型跟UserService类的对象关系映射
public enum UserServiceEnum {
user_info("user_info","userSerive","用户服务"),
cust_info("cust_info","custSerive","客户服务");
private String userType;
private String userServiceName;
private String detailMsg;
五,controller中使用
public Result addUserInfo(@RequestBody JSONObject jsonObject){
String userId = jsonObject.getString("userId");
String userType = jsonObject.getString("userType");
AbstractUserService userService = userFactoryContent.getAbstractUserService(userType);
userService.addUser(userId);
return new Result().success();
}
博文为个人笔记使用,如果有同学参考中遇见问题可以随时联系讨论。