首页 新闻 搜索 专区 学院

在基类中希望获取到子类中的服务,这该怎么处理啊?能否给个大致方案,有文档或者demo就更好啦!!谢谢!!!

0
悬赏园豆:15 [待解决问题]

我现在有多个service继承了基类BaseService, 然后每个service处理自己的逻辑,基类BaseService中放一些通用方法, 比如简单的增删改查,, 那我该怎么在基类BaseService调用到不同子类中的服务, 这样我不用每个service都写一遍 相同逻辑的方法。

我现在是在子类中调用基类方法的时候把服务传进来了, 很绝望,其实很不优雅。
public abstract class BaseService<P extends BaseProvider<T>, T extends BaseModel> {
protected Logger logger = LoggerFactory.getLogger(this.getClass());
//protected P provider;

public BaseService() {
}

public T queryById(Long id, BaseProvider provider) {
    Assert.notNull(id, "ID", new Object[0]);
    StringBuilder sb = new StringBuilder("jFrame4l:");
    String className = this.getClass().getSimpleName().replace("Service", "");
    sb.append(className.substring(0, 1).toLowerCase()).append(className.substring(1));
    sb.append(":").append(id);
    // modify 无法将对象直接转为泛型
    BaseModel record = (BaseModel) CacheUtil.getCache().get(sb.toString());
    if (record == null) {
        record = provider.queryById(id);
    }

    return (T) record;
}

}

我这边大概的想法是在基类中 定义了providr,
然后在子类:
@Autowired
public void setProvider(ISysUserProvider provider) {
this.provider = provider;
}

然后让基类的provider = ISysUserProvider服务,但是实际允许的结果是provider为空。
我的问题描述清楚了吗,好绝望, 希望大佬们给点意见或者方向!!!谢谢!!!

自然醒--的主页 自然醒-- | 初学一级 | 园豆:77
提问于:2019-04-12 17:31
< >
分享
所有回答(2)
0

每个 service 里面的方法,都有相同逻辑,说明只是参数不同,这个不能提取一个公共方法吗

三人乐乐 | 园豆:3250 (老鸟四级) | 2019-04-13 13:14
0

可以采用接口的方式来实现两者之间的数据传递

爱分享的曾大大 | 园豆:217 (菜鸟二级) | 2019-04-21 01:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册