花了两天时间用 Spring MVC 写了个博客网站

2015-09-28 18:44:09 +08:00
 raysmond

之前用 PHP 和 Ruby on Rails 写过网站,最近在学习 Spring 框架,顺便写了一个博客网站替代原来我比较旧的网站。初学 Spring MVC ,这是我用它撸的第一个网站。主要用的到的技术有:

我的博客网站是 http://raysmond.com
网站所有源代码开源在 Github 上面, https://github.com/Raysmond/SpringBlog
初学 Spring ,很多写法可能不符合 best practice ,希望有人能给一些建议。

网站部署在阿里云 ECS 上,顺便说一下 Java 的网站挺耗内存啊。
这个开源项目其实我主要是想学习 Spring 以及 Java 后台开发的一些技术,练练手。也希望有兴趣的朋友和我一起来开发晚上这个项目。把你认为最牛逼的技术和架构在这样一个最小的博客系统里面体现出来。

花了两天踩各种 Java 写网站的坑,但是也学习到一些知识。这个项目的目的不是写这个网站,而是学习。如果只是写这样一个博客网站的话,用 RoR 几个小时就可以搞定了。

21347 次点击
所在节点    分享创造
59 条回复
initialdp
2015-09-29 09:12:24 +08:00
@twittercom lz 是出于学习的目的,顺路撸了个网站。这挺好的。

从 lz 提供的各项数据看,我感觉 java 这东西还是呆在企业业务领域比较好,做其他领域的开发还是有点勉为其难了。
hantsy
2015-09-29 10:51:24 +08:00
@raysmond 不同 profile 为了适合 CI 和 production 配置,之前在 CI 上都是自动部署的。

我的两个 Sample 是从我以前的项目中的抽出来的(第一个非 Boot 例子配置 ~.config 包下的代码基本上是完全抽出来的),只是最基础的 REST 架构。之前一个大项目后台大概有 8 个独立运行的 war ,当时都是用 Tomcat ,前端(移动 APP ,桌面网站)都是 HTML5 静态的( AngularJS , Ionic 等。我这个主要是演示 REST API ,另外包括了 Swagger UI ,和生成 API 文档(主要用 spring-restdocs, springfox 等项目)。

传统的 MVC ,大约从前年开始,基本没再用过了, REST 现在都是项目的起点。

如果你熟悉 Jade , 应该对 CoffeeScript 之类有偏好,可以尝试将前端做成 NodeJS 程序,通过 REST API 与后交互。
hantsy
2015-09-29 11:08:34 +08:00
@raysmond 所有 Spring 技术都是基于 Java EE 的,这两都并不矛盾。最基本的一个 Spring Web 应用, Spring DispatcherSerlvet 是标准的 Servlet 。 Spring 内置支持 Bean Validation , JSR330(@Inject), JMS , Java Mail , JDNI 等标准,对最新的 Java EE 7 也跟很快,比如支持 Java EE7 的 @Trasactional, Concurrency Utilits , Batch ( Spring Batch 3 添加标准 Batch 的支持)等。

其实从复杂度差不多, Spring 越来越庞大。 Java EE 标准越来越简单,搭上 JBoss 的一些 Glue 项目,易用性应该比 Spring 好。目前最基本的 DI , 个人从使用了 Spring , CDI ( Seam2 是最初原型, Seam3 是 CDI 扩展) 几年后,比较喜欢 CDI 一些。
HentaiMew
2015-09-29 11:54:52 +08:00
@NCE java 确实越来越消耗内存了,但是这并不影响 java 的发展, java 的众多著名框架也越来越重,最著名 spring 甚至发展为一个可以跟 ejb 抗衡的平台。然而内存上对于企业而言成本不值一提,例如淘宝庞大的系统架构集群,跑了上万个服务。谷歌无时无刻都在进行着数千台的数量的服务器损坏和维修的过程。
java 麻烦,是因为想开发一个企业级应用,需要遵守许多准则,搭建一个庞大的系统架构,所以复杂度一般会越来越大。
但是,你同样可以像 php 那样玩,甚至可以不写控制层,直接把代码写在 jsp(等同于.php)的 view 层,如果觉得还是比不上动态语言的灵活性,没关系还有优秀的网页模板引擎等着你。当然没人会如此简单的开发 java ,因为庞大的架构性和众多框架技术超前的思想可是 java 的魅力所在。
学 java 的人很多,有的人学到头都不知道 java 为什么要复杂,这样的人一辈子都没入门。真正懂 java 的少之又少。
在众多领悟,例如搜索,大数据,异构通信,消息服务等大型系统架构涉及到的技术, java 几乎是万能而强大的。
php 由于语言的动态性,在大型架构系统中经常当做最上层的 View 用来最后做网页的生成,但是后台以及其他方面几乎是不会用 php 的,当然,敏捷开发小型基本不重架构的 WEB 网站 php 还是非常适合的。
不过我个人经常以 java+nodejs 作为组合实验异构形式的 WEB 系统,因为相比动态性, php 又比 js 差了一大截。如果开发小型站,也是直接上 node ,找不到用 php 的理由。
raysmond
2015-09-29 16:21:25 +08:00
@HentaiMew 你要理解写 PHP 的人,他们都认为 PHP 是世界上最好的语言,每次我碰到他们都这么跟我说。
Charming6
2015-09-29 18:00:53 +08:00
@raysmond 你不觉得这是写 PHP 的人的自嘲么?
qw7692336
2015-09-29 20:04:04 +08:00
喜欢用哪个?

下面推荐几个 Java Web 的东西
jhipster.github.io
playframework.com
sparkjava.com
hiroya
2015-09-30 13:09:50 +08:00
看起来占用好高啊…已经 star 了,等有这个配置的机子再折腾吧 orz ,机子连 b3log 都带不动…
raysmond
2015-09-30 17:21:56 +08:00
@qw7692336 play 也是不错的,但用 play 的我肯定用 Scala , play2.0 以后核心都是 scala 写的。
raysmond
2015-09-30 17:23:12 +08:00
@hiroya 这个配置 VPS 也很便宜,我就买了阿里云 2G 内存单核 CPU 的配置,够用了。现在大概用到 1.5G 。
meipics
2015-10-04 12:27:36 +08:00
几百兆内存的 VPS 照样可以跑 Java Web ,一方面优化,一方面选择较少的依赖。
raysmond
2015-10-04 13:19:34 +08:00
@meipics 内存也不是特别贵,懒得折腾了,各种优化来优化去,只是节省了内存的感觉不太有意思,可能对应用本身并没有什么优化。现在内存这些都不贵了。
blackboom
2015-10-05 01:07:21 +08:00
SSH 动不动就几十个 jar 包,实在受不了,试试 JFINAL ?
raysmond
2015-10-05 02:36:45 +08:00
@blackboom Spring 开源社区比这好多了,下载 jar 包多一点有关系吗?
shoaly
2015-10-05 22:05:07 +08:00
@HentaiMew 对于 java 的 web 始终一个过不去的结就是 这边修改完代码, 不能马上到浏览器那边刷新看效果, 始终有一个编译的时间差
zonghua
2015-10-08 17:04:15 +08:00
@NCE GitHub 上 Star 数最多的 Java 博客: https://github.com/b3log/solo
@blackboom maven , node 也是动不动就下载几十上百的包。
@hiroya 实测 solo 只要一百多兆
@hantsy https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples 我能不能直接用里面的配置?

hiroya
2015-10-09 00:23:01 +08:00
@zonghua 可能是 openvz 的问题吧,部署好后两天就崩了
czc2008
2015-12-07 23:06:21 +08:00
这个不错。
jack80342
2017-10-19 21:32:51 +08:00
最近翻译了最新的 Spring boot 官方指南,欢迎 fork。https://www.gitbook.com/book/jack80342/spring-boot/details

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/224315

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX