ITPub博客

首页 > 应用开发 > > 在基类中希望获取到子类中的服务,这该怎么处理啊?能否给个大致方案

在基类中希望获取到子类中的服务,这该怎么处理啊?能否给个大致方案

作者:smanzheng 时间:2019-08-16 11:46:00 0 删除 编辑

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

我现在是在子类中调用基类方法的时候把服务传进来了, 很绝望,其实很不优雅。

public abstract class BaseService

, 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为空。

我的问题描述清楚了吗,好绝望, 希望大佬们给点意见或者方向!!!谢谢!!!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4759/viewspace-3125626/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 字节对齐问题
请登录后发表评论 登录
全部评论

注册时间:2019-04-25

  • 博文量
    115
  • 访问量
    1240