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多表查询之一:Where 和 On的秘密
原文 sql多表查询之一:Where 和 On的秘密 对于还在SQL初级阶段的朋友来说,sql多表查询问题是一个比较有趣也容易出错的技术.什么时候会用到sql多表查询呢?是在两张或两张以上表单中通过某 ...
- Linux网络编程——连接和面向连接的协议之间没有区别
网络编程中最重要的概念就是连接取向(connection-oriented)和无连接(connectionless)协议.虽然本质.两者之间的区别是不难理解,编程的人来说,却是个非常easy混淆的问题 ...
- Jquery学习(三)选择
1.Jquery最重要的是选择. 学习要点: 1.简单选择器 2.进阶选择器 3.高级选择器 ①简单选择器. 最简单的也就是最经常使用的,最经常使用的一般也是 ...
- 采用RedisLive监控Redis服务
1.基础环境安装https://pypi.python.org/packages/source/b/backports.ssl_match_hostname/backports.ssl_match_h ...
- 玩转Vim-札记
玩转Vim-札记 距上篇博文已有一周有余,上次主要介绍了编辑器之神Vim的起源.安装并介绍了两种模式以及一些简单的操作.本次将继续对Vim的使用进行介绍. 登堂入室 首先接着说移动吧: 1 0 → 数 ...
- .NET平台机器学习
.NET平台机器学习资源汇总,有你想要的么? 接触机器学习1年多了,由于只会用C#堆代码,所以只关注.NET平台的资源,一边积累,一边收集,一边学习,所以在本站第101篇博客到来之际,分享给大家.部分 ...
- struts2 模型分配问题和延迟加载问题
傅型号值问题: 首先须要说明的是:Action在请求到达ActionProxy时已经创建出来了,而且对应的创建了一个值栈. 在拦截器到达之前这个图片已经OK了.Action已经创建.并且压入了值栈vs ...
- java中文件的相对路径以及jar中文件的读取
Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径. 一:绝对路径名:是完整的路径名,不需要任 ...
- STL在迭代的过程,删除指定的元素
直接在Code.在 Picture #include <iostream> #include <list> using namespace std; // STL在迭代的过程中 ...
- session什么时候被创建
一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet )调用HttpServletRequest.getSession(true) ...