这段时间用 Spring MVC 进行了开发,觉得很方便。
不过也踩到了一些坑,有一些心得。
Spring Autowired 注入
通常的套路是先声明一个接口,再定义一个或多个该接口的实现。
Autowired 时侯只用接口类型就可以,Spring 会自动找接口的实现注入。
如果接口有多个实现,则可以入 @Bean 定义一个 返回具体对象新实例的函数,并在类中用 @Configuration 来配置。
反之,如果直接声明接口的实现,则会报错。
用 Spring 管理 Session/Transaction
用 Spring 管理事务很方便。不用自己打开或关闭 Session。只要在高层的函数上使用 @Transactional 就可以了。
但是也要注意:
- @Transactional 适合用在高层的函数上,不要在底层的 Dao 实现上使用
使用 Spring-hibernate
使用了 Spring-hibernate 之后,再使用 Spring-TX,就不用再定义数据源了。
直接定义注入 Session Factory 和 Transaction Manager 就可以了。
另外,Hibernate 使用自带的 C3P0 Connection Pool, 不需要 Apache DBCP2 了。
前端 SPA 与 后端 MVC 的对比
感觉各有优劣。目前还没有办法做到前后端分离。
SPA 可以很灵活,但也存在问题:
- javascript 大了之后,很难维护
- 一些典型的操作,比如超时退出,需要专门的 Hack 才能解决
- 一些原本 MVC 下简单的操作,在 SPA 架构下比较麻烦
目前看来,在进行一个页面上的动态交互时,SPA 还是很有意义的。