读了周勇老师的《从零开始写javaweb框架》,感受干货仍是挺多的。想把本身的收获分享给你们。不过,这本书中的从零开始并非指的零基础,而是从无到有。因此,仍是建议有必定web基础的朋友们阅读,最好是对Spring的IOC、AOP有必定了解。
这本书一共有五章。首先要告诉你们,我没有读完,只是精读了前两章、粗读了三四章,第五章大体浏览了一下,之后若是还有什么新的感悟,还会再分享。仍是先说说目前的感觉吧。java
看的出来,做者水平很高,这本书也差很少将web框架经常使用知识和框架脉络梳理了一遍。可是说它须要有必定基础的朋友们阅读主要有两个缘由:web
你们若是仍是不知道本身是否适合这本书,能够看一下豆瓣的书评。sql
即便如此,读了这本书我也收获颇丰,也学习到了做者的一些编程的小技巧,把他分享给你们,但愿对你们有所帮助:数据库
我首先想到的就是FileInputStream类,可是你们都知道这个类的使用是很是麻烦的。像我这样基础不牢的coder要在网上找个例子估计才能写。但书中给咱们提供了一种很是简单的方法,使人耳目一新。apache
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
备注:此方法要求配置文件必须在项目的classpath下。编程
/** * 查询实体类 * */ public static <T> T queryEntry(Class<T> entityClass, String sql, Object... params) { T entity = null; try { entity = queryRunner.query(getConnection(), sql, new BeanHandler<T>(entityClass), params); } catch (SQLException e) { logger.error("query entry failure!", e); new RuntimeException(e); } finally { closeConnection(); } return entity; }
这里由于是个人弱点,我就详细介绍一下ResultSetHandler这个类,这个类有不少子类,于将查询到的ResultSet转换为不一样种类的对象:安全
它们的继承关系如图所示:框架
/** * 使用ThreadLocal保证Connection线程安全 */ private static final ThreadLocal<Connection> connectionHolder = new ThreadLocal<>();
第三章以后我看的就不太仔细了,缘由前面也说了,代码写的有点难懂,注释也少,不少都是在编写工具类。我是看着有点晕。也多是我太菜了。让你们笑话了。这里就给你们大概介绍一下主要内容吧。工具
第三章讲的是IOC容器相关的知识,主要讲IOC容器如何加载Bean对象。学习
第四章讲的比较详细。第一部分从静态代理讲到动态代理,再讲到什么是JDK代理、CGlib代理、Spring的AOP机制最后讲到Spring + Aspect。
第二部分讲了ThreadLocal和事务。
第五章讲了 Action的优化、文件上传和下载、集成Shiro安全框架和CXF框架。
后面的我都是大概浏览了一下大概内容,并无仔细的研究。你们也能够根据本身的须要学习其中的某一部分。
若是你们看了这本书有什么新的感悟,也欢迎分享给我。
这是黄勇老师的关于smart-framework的博客,你们若是对这个框架有兴趣的能够关注一下:https://my.oschina.net/huangy...