Coffee
Coffee
从接触Spring 到现在已经差不多2年多了,期间用它做过几个项目,从个人使用角度来说,Spring无疑是非常的成熟和方便的,但是知道怎么用,却不知道原理是码农和攻城师的区别,现在准备自己动手编写一个类似Spring的框架,当然它是非常小的,只包括一些基本的特性,但是这些基本特性已经满足一个项目的需求了。问问自己是否使用了很多Spring的功能? 无疑就是Hibernate+事务处理+JDBC+IoC+MVC+一些额外的小插件(上传,视图)+以及陌生的AOP了,这些基本的功能都会在Coffee项目中被实现。
最终Coffee的特性如下:
1. @Autowired, @Component(basic) , @Transaction(事务), @RequestMapping(),@RequestParam, @Vaild (MVC) 的注解支持
2. 基于类的配置方式, 不采用XML的配置方式,而是使用基于类定义的方式,这有助于重构软件, 而且代码量刷的一下减小了很多.
3. IoC功能和Spring基本类似,Bean的生命周期和Spring一致(除了afterProperty(),感觉init已经完成了afterProperty的功能,不必重复),
3. 数据层会兼容Hibernate和JDBC两种模式,以及一个数据源,和事务管理
4. 支持AOP编程,应该实现会比较简陋。
5. MVC支持基本参数验证,参数自动注入,URL映射, 大体功能和Spring 3.x的注解配置类似,砍掉了restful的功能(实现起来比较麻烦, 神马/path/{a}/{b}, 如果有时间的话,可以实现,尽量先把整体的框架搭出来), 而视图这块, 个人认为完全采用JSON渲染的方式,把jsp的功能可以移交给浏览器来处理,比如说使用artTemplate之类的模版工具都是不错的选择,所以视图解析就直接为把一个Object转换为JSON报文交给浏览器了,基本思想为:MVC为功能点,浏览器为数据渲染点。
6.MVC也支持表单验证,当然不会是JSR系列的,但是会尽量的模仿JSR规范来编写。
上述的特性应该可以支撑起一个基本的网站的后端了,虽然有点简陋,但是大家平时开发的时候,应该也只用到这么多功能把。忘记了 , 还有文件上传,这个就扔到最后面把。
Coffee项目已经基本实现了IoC功能(一个月前,干的事情,现在直接拿过来,当然代码还需要重构,变得更加精简点),代码地址如下:
https://github.com/y2k0103/coffee.git
Coffee的更多相关文章
- 支付宝WAP支付接口开发(Node/Coffee语言)
此博客不更新很久了, 更新的文档在这, 有兴趣到这里围观: http://neutra.github.io/2013/%E6%94%AF%E4%BB%98%E5%AE%9DWAP%E6%94%AF%E ...
- nssm在windows服务器上部署nodejs,coffee启动方式
本想用forever / pm2 来部署nodejs, 百度后发现只能在Linux系统上使用,window上没法使用,兜一圈后又转nssm了.... 在Linux上,可以轻松的使用forever或者p ...
- Coffee Script 笔记 1
安装node 虽然官网提供了单文件bin的版本 但是并不知道怎么安装npm 于是乎还是得安装msi (坑 当使用 coffee -w -c . 监视文件改变 即时编译的时候会 提示 Error: T ...
- 【Mood-20】滴滤咖啡做法 IT工程师加班必备 更健康的coffee 项目经理加班密鉴
Drip Coffee
- HER COFFEE夜场代金券【1折】_北京美食团购_360团购导航
HER COFFEE夜场代金券[1折]_北京美食团购_360团购导航 HER COFFEE夜场代金券
- B. Karen and Coffee
B. Karen and Coffee time limit per test 2.5 seconds memory limit per test 512 megabytes input standa ...
- CodeForces 816B Karen and Coffee(前缀和,大量查询)
CodeForces 816B Karen and Coffee(前缀和,大量查询) Description Karen, a coffee aficionado, wants to know the ...
- 新概念英语(1-47)A cup of coffee
新概念英语(1-47)A cup of coffee How does Ann like her coffee? A:Do you like coffee, Ann? B:Yes, I do. A:D ...
- codeforces round #419 B. Karen and Coffee
To stay woke and attentive during classes, Karen needs some coffee! Karen, a coffee aficionado, want ...
随机推荐
- 数据库性能监测工具——SQL Server Profiler
使用SQL Server Profiler 进行sql监控需要一些设置: 其他的就是进行分析了~ 清除SQL SERVER缓存 常用的方法: DBCC DROPCLEANBUFFERS 从缓冲池中删除 ...
- OCP读书笔记(26) - 题库(ExamF)
501.Note the output of the following query;SQL> SELECT flashback_archieve_name, status FROM dba_f ...
- SpringMVC传参
@Controller @RequestMapping("/user") public UserController extends BaseController{ @InitBi ...
- 删除句子UITableView额外的底线和切割线
于viewDidLoad添加代码功能句子: self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 它可 ...
- PHP课程十大 PHP图像处理功能和实现的验证码
假如你喜欢这个博客,访问这个博客地址:http://blog.csdn.net/junzaivip 总结: gd绘图库: 数学函数 PHP图片处理函数 图片处理函数使用场景 1.验证码 2.缩放 3. ...
- 大数据系列修炼-Scala课程08
接下来会讲解关于各种模式匹配,从中就会知道模式匹配的重要性 关于Type.Array.List.Tuple模式解析 1.Type模式匹配代码解析 //关于Type类型的模式匹配 //匹配 Int类型. ...
- WebService到底是什么? [转]
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- Java设计模式偷跑系列(十二)组合模式建模和实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653 组合模式(Composite):组合模式有时又叫部分-总体模式.将对象组合成 ...
- JS编程
JS编程常识 一.UI层的松耦合 松耦合就是要求各层遵循“最少知识原则”,或者说是各层各司其职,不要越权: HTML:结构层 CSS:表现层 JS:行为层 对于各层的职能,有一句比较贴切的解释:H ...
- Flex 日志管理
在Flex中调试方法有两种: 一是用trace()函数,在flex builder中进行调试: 二是用logTarget类,例如以下代码: // Create a target. var logTar ...