我现在有多个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为空。
我的问题描述清楚了吗,好绝望, 希望大佬们给点意见或者方向!!!谢谢!!!
每个 service 里面的方法,都有相同逻辑,说明只是参数不同,这个不能提取一个公共方法吗
可以采用接口的方式来实现两者之间的数据传递