为什么是Martini

这里有两篇博客可供参考 Martini的工作方式 和 .
简单的说 Injector 通过 reflect 削弱了合作对象间引用依赖.

对于 Martini 的使用可以简单总结为:

  • Martini 对象方法 Map/MapTo/Use/Handlers/Action 非并发安全, 服务器运行前使用.
  • Router 对象也是非并发安全的, 服务器运行前使用.
  • 所有要使用的对象必须先 Map/MapTo.
  • 对 http.ResponseWriter 任何的 Write 都会完结响应. 内部方法是终止了响应 Handler.
  • 善用 Context 对象的 Next 方法会产生奇效.

上一版本因为不能找到 “解耦” 的框架而放弃使用框架. Martini 在 Injector 的支持下为”解耦”提供了可能. 这正是笔者希望的.

Package选择与修改

  • Martini社区

    Martini 社区贡献的 package, 可能会使用一些.如果您研究了 Martini 和这些 contrib package, 您会发现真的解耦了.

  • 配置文件支持 tom-toml

    笔者重新写了一个 TOML 解析器 tom-toml, 参见文章, 和第六章的内容.

  • 数据库操作 typepress/db

    gosexy/db 的重构版本. 代码质量很高. 但是包路径问题同样给 import 造成了问题. 为方便, 笔者 fork 了一个 github 版本 .
    upper.io/db 为常见的 SQL/NoSQL 数据库提供了统一的调用接口, 这是非常难能可贵的.

  • typepress/log 学习了 uniqush/log 的一些好想法重新构建的.
    typepress/log 支持日志分割, 并实现了一个 file 日志, 一个 email 日志.

  • template 模板

    可能会有几个备选版本 martini-contrib 中有, 笔者写有 template.

依赖注入