架构师速成6.11-开发框架-后端封装思路

要做一个好的开发框架并不是直接找一个现成的Spring就ok了,这个对于一般新手来说学习难度还是有点高。另外Spring还是一个通用性的框架,我们需要针对业务的定制化封装。我以java为例讲解一下后端需要做什么:

  1. 确定层数结构
    1. parent
      1. common
      2. test
      3. dao
      4. service-common
      5. service
      6. web-common
      7. web
  2. parent统一引入的类库及版本,通过maven方式进行类库管理,在parent中定义所有引入的类库及版本,不需要其他人私自引入类库。java类库的膨胀及冲突控制的确是一项很头疼的事情,一不小心最终的项目就达到几百兆,每次编译发布就需要很长时间。我在这里强烈推荐一下一个国内开源框架nutz,无引入其他任何jar包,提供了spring和hibernate的最常用功能,只有1M。我们之前使用Spring,后来换成nutz,而且严格限制引入的jar包后,web最终打完包,才10M左右。
  3. common工具类确定及封装,不要引入过多的包,只引入最基础而且是最必须的工具类。比较极端的情况下,自己写。
    1. StringUtils,DateUtils等,这个引入common-lang
    2. 语法糖,比如 map,list等的泛型构造,isEmpty(Object ) length(Object)等
    3. JodaTime,谁用谁知道
    4. guava,缓存,限制流量
    5. log,java的日志是一大堆,建议slf4j+logback,其他的都桥接到这上面。
    6. Exception,定义异常接口 ISystemException,IBusinessException,IAuthException,及几个实现类,这个会单独起一个异常章节进行讲解。
    7. Ioc,这个一般你使用的框架已经提供了。
    8. Aop,这个一般你使用的框架已经提供了。
  4. test 单元测试,集成测试的辅助类封装,让写单元测试跟玩一样,否则没有人愿意写的。
    1. IOC容器,Spring上下文及测试类封装
    2. 通用的Mock类
  5. dao 对于db或者hbase,mongodb等一系列存储的封装,当然如果有必要还可以拆分。我针对db先说一下,其他的先不说:
    1. 全局唯一主键生成算法
    2. 主备库,多数据源
    3. 统一的IdEntity,IAuthorEntity(带修改人,修改时间记录的),所有数据库实体都继承自他2个
    4. 针对统一类的泛型增删改查封装
    5. 扩展自定义的标注,比如@Column @MyId等等用于实现自己特殊的逻辑
    6. 数据级别的权限控制
    7. 数据库事务,这个一般你使用的框架已经提供了。
  6. service-common,封装业务逻辑所需要的工具类或基础类,如果没有多少,可以和service合并。
  7. service真正的业务逻辑,根据不同的业务及规模可以进一步拆分service-a,service-b
  8. web-common,封装于界面及mvc相关,filter等等的逻辑
    1. mvc,url-mapping 这个一般框架已经提供,比如spring,nutz都会有。
    2. 异常处理,后面会单独写
    3. 单点登录filter,其他统一的filter
    4. 访问权限控制
    5. 不同后缀的处理,json,html,json及jsonp的封装
    6. 动静分离,静态文件使用nginx进行加载,设置缓存时间等等
    7. 界面统一的变量封装,比如根路径,user
    8. 用户获取

做完这些,后端的基本封装才算稍微有一个样子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值