Spring Boot 服务层泛型抽象与代码复用实战

详解如何设计基于泛型的 BaseService + BaseServiceImpl 模板,极大减少业务层重复 CRUD 代码,提高代码可维护性和扩展性。


🎯 设计目标

  • 统一定义 CRUD 接口
  • 抽象公共实现,业务专注差异化
  • 避免重复代码膨胀
  • 提升开发效率与代码质量

🧱 代码设计

1. BaseService 接口

java 复制代码
public interface BaseService<T, ID extends Serializable> {
    T getById(ID id);
    List<T> listAll();
    void save(T entity);
    void update(T entity);
    void deleteById(ID id);
}

2. BaseServiceImpl 抽象实现

java 复制代码
public abstract class BaseServiceImpl<T, ID extends Serializable, M extends BaseMapper<T>> implements BaseService<T, ID> {

    protected final M mapper;

    public BaseServiceImpl(M mapper) {
        this.mapper = mapper;
    }

    @Override
    public T getById(ID id) {
        return mapper.selectById(id);
    }

    @Override
    public List<T> listAll() {
        return mapper.selectAll();
    }

    @Override
    public void save(T entity) {
        mapper.insert(entity);
    }

    @Override
    public void update(T entity) {
        mapper.update(entity);
    }

    @Override
    public void deleteById(ID id) {
        mapper.deleteById(id);
    }
}

⚙️ 业务接入示例

java 复制代码
@Service
public class UserServiceImpl extends BaseServiceImpl<User, Long, UserMapper> implements UserService {

    public UserServiceImpl(UserMapper userMapper) {
        super(userMapper);
    }

    // 可写特有业务逻辑
}

📌 实践建议

  • 新增业务模块从此基类继承,避免重复实现
  • 结合分页、事务钩子方法,增强基类能力
  • 定期重构老业务代码,引入泛型抽象层

🔚 总结

服务层泛型抽象设计,减少了样板代码,提高了代码复用率和可维护性,是大型项目必备的架构实践。业务开发专注核心逻辑,极大提升团队开发效率。


🔗 项目源码地址


🙋‍♂️ 如果你觉得这篇文章有帮助:

  • 点赞 👍
  • 收藏 ⭐
  • 评论 💬
  • 关注我 👇 获取后续实战内容
相关推荐
咕白m62541 分钟前
通过 C# 快速生成二维码 (QR code)
后端·.net
踏浪无痕1 小时前
架构师如何学习 AI:三个月掌握核心能力的务实路径
人工智能·后端·程序员
小毅&Nora1 小时前
【后端】【SpringBoot】① 源码解析:从启动到优雅关闭
spring boot·后端·优雅关闭
嘻哈baby1 小时前
从TIME_WAIT爆炸到端口耗尽:Linux短连接服务排查与优化
后端
开心就好20251 小时前
iOS应用性能监控全面解析:CPU、内存、FPS、卡顿与内存泄漏检测
后端
问今域中2 小时前
Spring Boot 请求参数绑定注解
java·spring boot·后端
计算机程序设计小李同学2 小时前
婚纱摄影集成管理系统小程序
java·vue.js·spring boot·后端·微信小程序·小程序
一 乐3 小时前
绿色农产品销售|基于springboot + vue绿色农产品销售系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·宠物
3***68843 小时前
Spring Boot中使用Server-Sent Events (SSE) 实现实时数据推送教程
java·spring boot·后端
C***u1763 小时前
Spring Boot问题总结
java·spring boot·后端