Spring 是个好框架……不过 Java 开发的一个通病是前期配置太麻烦。正好手头上有个新项目,我考虑后决定用 Java 做,看了新出的 Spring 4,还有 Spring Boot,可以快速地做出一个 Web Demo。不过我不太喜欢大量使用注解的方式,而且 Spring 4 出来的时间不久,资料也不多,所以还是打算用 Spring 3 来做。
Spring 3 的配置比较多,网上不少文章会教你一步步搭建环境,涉及到细节就是怎么说的都有了。另一个不爽的地方是,有些概念解释不清,对初次使用的人很不友好。再加上我记性不好,又不想每次开始新项目再从头学一遍,所以做了一个 Maven 的 archetype,放到了 Github 上,名字叫 spring-webapp-restful-quickstart,顾名思义,除了支持 Web,还能支持 RESTful API,就像这样:
- http://localhost:8080/index
这是 HTML 页面输出 - http://localhost:8080/index.json
这是 JSON 数据的输出
以上两种输出只取决于 URL 的后缀,内部用的都是同一个 Controller —— 不用单独为 API 专门写 Controller 了。
API 的输出使用了 ContentNegotiatingViewResolver,目前 API 只支持 JSON 格式的输出,不过要加入其他的格式,如 XML 也不难,自己照着改 applicationContext.xml 里的配置就好了。
这个骨架用了 Tiles 2 作为模板,选择 Tiles 2 是因为它使用 JSP 作为基础语言,这样能更好地和其他的标签库一起使用,而且对熟悉 Java 的人来说扩展起来也比较容易,做自己的 JSP 标签就行了。至于为什么没选 Tiles 3……是因为我看 Tiles 2 的特性就够用了,就没再看 Tiles 3……此外还配置好了 Jetty,可以直接用 maven jetty:run 运行项目。
目前这个 archetype 只是放到了我的 Github 下,等之后再完善一些会发布到 Maven 中央仓库。需要用的话只需要 git clone 下来然后用 maven install 安装到本地的 Maven 仓库就可以了。用 maven 创建新项目时记得选 spring-webapp-restful-quickstart。