
架构探险
BraveWangDev
11年开发经验、全栈工程师;2023年更新计划已确定,希望能与大家共同进步;
展开
-
架构探险-第一章:从一个简单的Web应用开始
一,前言最近一段时间研究Spring源码,买了基本源码相关的书,这本架构探险,从零开始写java Web框架,作者是smartFrameWork开源框架创始人,阿里巴巴架构师,我目前正在学习这本书,随即写成笔记,供自己和他人查阅,本篇是本书的第一章,简单的使用IDEA创建了一个web项目并配置Maven和tomcat将服务运行起来,并将源码托管到开源中国(哦,对了,这本书的序言是...原创 2018-04-27 14:08:19 · 1299 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(9)-完善视图层
一,前言上篇以CustomerServlet为例,对控制器层进行完善通过依赖CustomerService,获取客户数据,放入请求属性,并重定向到customer.jsp这篇同样以customer.jsp为例,对齐进行完善,获取并展示数据二,完善视图层customer.jsp:<%@ page pageEncoding="UTF-8" %><%...原创 2018-05-31 16:53:56 · 413 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(8)-完善控制器层
一,前言经过了之前的一系列重构,终于完成了服务层的完善这一节继续对控制器层进行完善有了完善后的服务层,控制器层直接调用服务层就好了,非常简单二,完善控制器层参照: 架构探险-第二章:为Web应用添加业务功能(1)-设计和代码框架在创建代码框架时,根据需求创建了几个Servlet,并将其中的实现标记为TODO 以CustomerServlet为例:@WebS...原创 2018-05-31 14:13:43 · 558 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(8)-优化Junit单元测试
一,前言上一节补全了CustomerService的增删改查方法,执行Junit测试了方法的正确性 不过这里存在一个问题: 当执行完Junit测试,deleteCustomerTest的测试方法使id=1的数据被删除 导致下次执行Junit时测试数据就不存在了这一节将对Junit做进一步优化,以便适合于正式项目的开发和测试流程二,解决方法拷贝一个测试数据库...原创 2018-05-31 13:29:48 · 509 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(5)-优化服务层-Connection的线程隔离
一前言上一节针对之前服务层存在的两个问题,对服务层进行了优化 1,提取DatabaeHelper类,便于多Service复用数据库相关操作的方法 2,使用DbUtils解决数据库查询时大量重复代码问题目前仍存在需优化的问题: 每次执行数据库操作时,都需要新创建一个Connection对象,操作完成后关闭 如何能将这部分操作从Service中移除,是Connec...原创 2018-05-24 17:17:13 · 375 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(4)-优化服务层-提取DatabaseHelper和使用DbUtils
一,前言通过上一节对服务层的优化: 提取数据库配置信息到外部properties配置文件 在Service中通过读取外部properties配置文件获取连接信息目前Service层还存在一些问题: 1)在CustomerService类中读取config.properties文件,是不合理的 开发中会存在多个Service,所以要将这些公共代码提取重来以便于复...原创 2018-05-24 16:25:46 · 470 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(7)-补齐Service方法
一,前言上一节,通过使用Apache DBCP数据库连接池对Connection进行管理数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中当用户需要访问数据库时,从连接池中取出一个已建立的空闲连接对象。使用完毕后,将连接放回连接池中,供下一个请求访问使用。连接的建立、断开都由连接池自身来管理。有效的避免了频繁创建数据库连接带来的大量系统开销问题至此,对于Service层...原创 2018-05-28 23:53:12 · 414 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(3)-优化服务层-读取配置文件
一,前言由于这一章节较长,所以拆分为几个部分记录上一篇对服务层进行了完善:添加数据库连接配置,获得数据库连接实例,获取数据并测试这一篇对服务层进行优化,将写在Service类中的数据库连接配置信息抽取到配置文件二,优化服务层-抽取配置信息提取配置信息到properties配置文件为了让数据库信息可配置,将数据库信息放入到一个配置文件中在classpath下创建一个con...原创 2018-05-24 11:18:19 · 345 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(2)-完善服务层-优化前
一,前言由于这一章节较长,所以拆分为几个部分记录上一篇搭建了一个"客户管理"模块的代码框架,并对主要逻辑部分标记TODO这一篇将TODO部分的细节进行完善分别完善:服务层,控制器层,视图层二,完善服务层1,添加SLF4J依赖为了在服务层记录日志,在pom.xml中添加SLF4J依赖SLF4J提供日志API,使用Log4J作为实现&lt;!-- SLF4J -...原创 2018-05-23 02:08:20 · 380 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(1)-设计和代码框架
一,前言由于第二章比较长,且涉及到逐步演进的过程所以将第二章拆分为多节进行记录这一节主要针对项目的需求分析可框架搭建二,需求分析进入&quot;客户管理&quot;模块,列表查看所有客户可通过&quot;客户名称&quot;进行模糊查询列表中,点击&quot;客户名称&quot;链接,查看客户基本信息&quot;新增&quot;按钮,进入&q原创 2018-05-22 16:58:55 · 414 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(6)-优化服务层-数据库连接池
一.前言上一节对Service方法中获取和关闭数据库Connection对象的操作进行了提取,提取到DatabaseHelper中,使Service更加简单,实现了代码的重用目前需要考虑的一个问题:当前多次对Service的操作会频繁创建Connection数据库的连接数是有限的,频繁创建数据库连接会对数据库造成大量的系统开销因此,需要一种方案,实现对数据库的&amp;quot;池化&amp;quot;,就是&amp;quot;数据库...原创 2018-05-25 10:02:57 · 325 阅读 · 0 评论 -
架构探险-第二章:为Web应用添加业务功能(10)-新框架
一,前言这一章为代码添加了业务逻辑,实现了基本功能,主要开发和优化流程如下:1,将创建数据库连接的参数提取到properties文件,使用PropsUtil进行读取 是数据库配置信息和代码业务逻辑解耦,可配置2,将创建数据库链接,关闭数据库连接操作提取到DatabaseHelper类, 在Service层方法中,操作数据库前后分别调用获取连接和关闭连接方法,是代码得到复用 使...原创 2018-06-01 10:08:27 · 447 阅读 · 0 评论