书刊介绍
《企业级Java EE架构设计精深实践》内容简介
本书全面、深入介绍了企业级Java EE设计的相关内容,内容涵盖了Java EE架构设计的常见问题。《企业级Java EE架构设计精深实践》每一章讲解一个Java EE领域的具体问题,采用问题背景、需求分析、解决思路、架构设计、实践示例和章节总结的顺序组织内容,旨在通过分析相关领域中的常用框架及存在问题,给出相应的解决方案,提高读者分析和解决问题的能力,并增强其架构设计的能力。
《企业级Java EE架构设计精深实践》共13章。内容主要包括虚拟文件系统实践、缓存实践、文件处理框架实践、模板语言实践、数据库访问层实践、数据库扩展实践、服务层实践、流程引擎实践、元数据实践、展现层开发实践、Web扩展实践、Tiny统一界面框架实践和RESTful实践。附录中给出了相关学习资源和配置运行指南。
《企业级Java EE架构设计精深实践》语言简洁,思路清晰,示例丰富、完整,适合具有一定Java基础的读者阅读,尤其适合从事企业级Java EE软件架构和设计的人员阅读。
罗果,专注于企业级Java EE开发平台领域。涉猎广泛,在模块化、元数据、模板引擎、数据库分区分表、SOA等领域都有深入实践。吃过很多亏,上过很多当,但坚信实践出真知。业余时间热心于开源技术,热衷于技术分享,撰写了大量的技术博客,从问题、原理和实践几个方面深入浅出地讲述知识。在“开源中国社区”开博两年,其博客浏览量已近百万次。所开发的Java EE开源框架Tiny,入驻“开源中国社区”两年以来,获得的Star和Fork数都已双双近千,是开源中国极具活力的开源项目之一。作品目录
序一
序二
序三
前言
第1章:虚拟文件系统实践
1.1、背景介绍
1.2、什么是VFS
1.3、VFS对比
1.3.1、Apache
VFS
1.3.2、Tiny
VFS
1.4、VFS框架设计思想
1.5、VFS实现讲解
1.5.1、VFS管理器
1.5.2、SchemaProvider模式提供者
1.5.3、FileObject虚拟文件
1.5.4、FileObjectFilter过滤接口
1.6、VFS应用示例
1.6.1、本地文件
1.6.2、Jar文件
1.6.3、FTP文件
1.6.4、ZIP文件
1.7、本章总结
第2章:缓存实践
2.1、缓存简介
2.1.1、问题的提出及其解决方案分析
2.1.2、用户需求
2.1.3、Tiny缓存解决思路
2.2、字节码缓存设计
2.2.1、字节码操作工程
2.2.2、预编译工程
2.2.3、缓存实现工程
2.2.4、技术特点
2.3、动态代理缓存设计
2.3.1、缓存接口定义
2.3.2、切面缓存工程
2.3.3、技术特点
2.4、缓存方案实践
2.4.1、字节码方案配置
2.4.2、字节码方案示例
2.4.3、动态代理方案配置
2.4.4、动态代理方案示例
2.5、本章总结
2.5.1、关键点:缓存实现方案的可替换性
2.5.2、关键点:缓存代码与业务代码的解耦
2.5.3、关键点:模板语言的应用
第3章:文件处理框架实践
3.1、概述
3.1.1、FileProcessor接口
3.1.2、FileResolver接口
3.1.3、FileMonitorProcessor类
3.2、基础文件扫描器
3.2.1、XStreamFileProcessor类
3.2.2、I18nFileProcessor类
3.2.3、Annotation扫描器
3.2.4、SpringBeansFileProcessor类
3.3、完整示例
3.3.1、单独使用
3.3.2、通过配置文件配置
3.4、本章总结
第4章:模板语言实践
4.1、模板语言简介
4.1.1、模板语言构成
4.1.2、模板语言应用场景
4.2、常见的模板语言
4.2.1、Velocity模板语言
4.2.2、FreeMarker模板语言
4.2.3、Tiny模板语言
4.3、Tiny模板语言设计
4.3.1、Tiny模板语言的构建原因
4.3.2、模板语言执行方式
4.3.3、模板语言架构
4.3.4、Tiny模板语言实现与扩展
4.3.5、模板语言语法解析
4.3.6、模板语言渲染机制
4.4、模板语言的使用
4.4.1、依赖配置
4.4.2、模板语言的配置
4.4.3、模板语言的Eclipse插件
4.4.4、Hello,TinyTemplate
4.5、模板语言语法介绍
4.5.1、变量
4.5.2、取值表达式
4.5.3、Map常量
4.5.4、数组常量
4.5.5、其他表达式
4.5.6、索引表达式
4.5.7、#set指令
4.5.8、条件判断
4.5.9、==相等运算
4.5.10、AND运算
4.5.11、OR运算
4.5.12、NOT运算
4.5.13、循环语句
4.5.14、循环状态变量
4.5.15、循环中断:#break
4.5.16、循环继续:#
continue
4.5.17、while循环
4.5.18、模板嵌套语句#include
4.5.19、宏定义语句#macro
4.5.20、宏引入语句#import
4.5.21、布局重写语句#layout
#@layout
4.5.22、停止执行#stop
4.5.23、返回指令#return
4.5.24、行结束指令
4.5.25、读取文本资源函数read和readContent
4.5.26、解析模板parser
4.5.27、格式化函数fmt、format和formatter
4.5.28、宏调用方法call和callMacro
4.5.29、实例判断函数is、instanceOf和instance
4.5.30、求值函数eval和evaluate
4.5.31、随机数函数rand和random
4.5.32、类型转换函数
4.5.33、日期格式转换formatDate
4.6、模板语言扩展
4.6.1、资源加载器的使用
4.6.2、宏的使用
4.6.3、函数的使用
4.6.4、国际化的使用
4.6.5、静态类和静态方法的使用
4.6.6、Servlet集成
4.6.7、SpringMVC集成
4.7、本章总结
第5章:数据库访问层实践
5.1、数据访问层简介
5.2、常见数据库访问层介绍
5.2.1、Hibernate简介
5.2.2、Ibatis简介
5.2.3、JPA简介
5.2.4、DSL数据库访问层简介
5.3、TinyDsl设计方案
5.3.1、SQL抽象化设计
5.3.2、DSL风格SQL设计
5.3.3、SQL执行接口设计
5.3.4、执行接口实现介绍
5.4、数据库访问层示例
5.4.1、工程创建
5.4.2、准备工作
5.4.3、Hibernate示例
5.4.4、Ibatis示例
5.4.5、JPA示例
5.4.6、TinyDsl示例
5.5、本章总结
第6章:数据库扩展实践
6.1、数据库扩展简介
6.2、常见数据库扩展方案
6.2.1、DAO层
6.2.2、DataSource层
6.2.3、JDBC层
6.2.4、Proxy层
6.3、读写分离
6.3.1、读写分离
6.3.2、负载均衡
6.3.3、数据同步
6.4、分库分表
6.4.1、同库分表
6.4.2、不同库分表
6.5、开源方案介绍
6.5.1、TDDL
6.5.2、Routing4DB
6.5.3、TinyDbRouter
6.5.4、开源方案的对比
6.6、TinyDbRouter的设计和实现
6.6.1、设计目标
6.6.2、设计原理之接入层设计
6.6.3、设计原理之SQL解析层设计
6.6.4、设计原理之路由决策层设计
6.6.5、设计原理之执行层设计
6.6.6、实现
6.7、应用实践
6.7.1、读写分离示例
6.7.2、分库分表示例
6.7.3、集群事务示例
6.7.4、元数据示例
6.7.5、自定义扩展
6.7.6、常见FAQ
6.8、本章总结
第7章:服务层实践
7.1、服务层简介
7.1.1、传统服务层
7.1.2、Tiny服务层
7.2、Tiny服务层介绍
7.2.1、服务声明
7.2.2、服务注册
7.2.3、小结
7.3、本地服务层实践
7.3.1、服务描述
7.3.2、服务定义
7.3.3、服务收集与注册
7.3.4、服务执行
7.3.5、小结
7.4、远程服务实践
7.4.1、传统的远程服务
7.4.2、新的远程服务模式
7.4.3、多服务中心支持
7.4.4、新的远程服务实现
7.4.5、小结
7.5、本地服务调用示例
7.5.1、非Tiny框架调用示例
7.5.2、Tiny框架应用调用
7.6、远程服务配置示例
7.6.1、非Tiny框架配置示例
7.6.2、Tiny框架应用配置
7.7、本章总结
第8章:流程引擎实践
8.1、流程引擎简介
8.1.1、流程引擎的来历
8.1.2、解决方案
8.1.3、特性简介
8.2、流程引擎实现
8.2.1、流程组件
8.2.2、流程组件配置
8.2.3、流程组件管理
8.2.4、流程配置
8.2.5、流程管理
8.2.6、流程执行
8.3、流程引擎特性
8.3.1、流程可继承性
8.3.2、灵活的EL表达式
8.3.3、流程可重入
8.3.4、流程可转出
8.3.5、强大异常处理
8.4、流程编辑器
8.4.1、创建流程
8.4.2、界面说明
8.4.3、操作说明
8.5、本章总结
第9章:元数据实践
9.1、元数据简介
9.1.1、问题背景
9.1.2、解决途径
9.2、基础元数据设计
9.2.1、支持语言类型
9.2.2、标准数据类型
9.2.3、业务数据类型
9.2.4、标准字段
9.3、数据库元数据设计
9.3.1、表及索引
9.3.2、视图
9.4、元数据开发指南
9.4.1、元数据加载机制
9.4.2、元数据处理器
9.5、元数据开发实践
9.5.1、Eclipse插件
9.5.2、应用配置
9.5.3、生成方言模板
9.5.4、生成标准数据类型
9.5.5、生成业务数据类型
9.5.6、生成标准字段
9.5.7、生成数据库表
9.5.8、定义元数据
9.5.9、生成Java代码
9.5.10、生成SQL
9.6、本章总结
第10章:展现层开发实践
10.1、展示层简介
10.1.1、Servlet
10.1.2、JSP
10.1.3、模板语言
10.1.4、展示层常见问题
10.2、展示层方案设计
10.2.1、UI组件包开发
10.2.2、资源合并实践
10.2.3、避免重复代码
10.2.4、国际化问题
10.3、前端访问方案实践
10.3.1、组件包封装
10.3.2、宏接口定义
10.3.3、页面和布局编写
10.3.4、前端参数配置
10.4、本章总结
10.4.1、关键点:DRY原则的实现
10.4.2、关键点:JS文件的合并
10.4.3、关键点:CSS文件的合并
第11章:Web扩展实践
11.1、背景简介
11.2、监听器设计原理
11.2.1、应用配置管理
11.2.2、应用处理器(ApplicationProcessor)
11.2.3、Web监听器
11.2.4、监听器配置管理
11.3、过滤器设计原理
11.3.1、请求上下文(WebContext)
11.3.2、TinyFilter介绍
11.4、处理器设计原理
11.4.1、过滤器配置(TinyProcessorConfig)
11.4.2、过滤器配置管理(TinyProcessorConfigManager)
11.4.3、处理器管理接口(TinyProcessorManager)
11.5、BasicTinyFilter类
11.5.1、拦截器接口
11.5.2、默认拦截器
11.6、SetLocaleTinyFilter类
11.6.1、Locale基础
11.6.2、Charset编码基础
11.6.3、Locale和charset的关系
11.6.4、设置locale和charset
11.6.5、使用方法
11.7、ParserTinyFilter类
11.7.1、基本使用方法
11.7.2、上传文件
11.7.3、高级选项
11.8、BufferedTinyFilter类
11.8.1、实现原理
11.8.2、使用方法
11.8.3、关闭buffer机制
11.9、LazyCommitTinyFilter类
11.9.1、什么是提交
11.9.2、实现原理
11.9.3、使用方法
11.10、RewriteTinyFilter类
11.10.1、概述
11.10.2、取得路径
11.10.3、匹配rules
11.10.4、匹配conditions
11.10.5、替换路径
11.10.6、替换参数
11.10.7、后续操作
11.10.8、重定向
11.10.9、自定义处理器
11.11、SessionTinyFilter类
11.11.1、概述
11.11.2、Session框架
11.11.3、Cookie
Store
11.11.4、总结
11.12、SpringMVCTinyProcessor介绍
11.12.1、基于扩展协议的内容协商
11.12.2、约定开发
11.12.3、扩展协议
11.13、TinyWeb实践
11.13.1、准备工作
11.13.2、使用TinyHttpFilter
11.13.3、使用TinyProcessor
11.14、本章总结
第12章:Tiny统一界面框架实践
12.1、UIML简介
12.1.1、问题与需求
12.1.2、UIML解决方案
12.1.3、UIML设计思路
12.1.4、UIML优势
12.2、UIML开发指南
12.2.1、框架管理引擎
12.2.2、组件类型
12.2.3、组件
12.2.4、样式列表
12.2.5、样式
12.2.6、布局器类型
12.2.7、布局器
12.2.8、样式类型列表
12.2.9、样式类型
12.2.10、属性类型
12.2.11、属性
12.3、UIML使用实践
12.3.1、UIML的配置
12.3.2、图形编辑器
12.3.3、样式简单示例
12.3.4、开发流程示例
12.4、常见FAQ
12.4.1、请问UIML开发必须区别三类角色吗?
12.4.2、请问UIML开发需要了解哪些新的概念?
12.4.3、请问UIML开发支持Spring等常用框架吗?
12.4.4、请问UIML支持哪些平台?
12.4.5、请问可以修改引用组件的属性吗?
12.4.6、请问设计组件必须指定平台属性吗?
12.5、本章总结
第13章:RESTful实践
13.1、RESTful简介
13.2、Spring
RESTful实践
13.2.1、Spring
RESTful简介
13.2.2、使用注解配置URL映射
13.3、Tiny
RESTful风格实践
13.3.1、URL映射功能
13.3.2、URL映射管理功能
13.3.3、URL重写
13.4、Tiny
RESTful实践
13.4.1、环境准备
13.4.2、开发用户增删改查应用
13.4.3、支持RESTful风格
13.5、本章总结
附录A
相关资源
A.1、复用第三方库列表
A.2、借鉴第三方开源框架列表
A.3、示例工程简介
A.4、支持我们
A.5、学习Tiny框架的相关资源
附录B
配置运行指南
B.1、环境配置
B.1.1、配置Java
B.1.2、配置Maven
B.1.3、配置IDE-
Eclipse
B.2、mvn编译工程
B.3、Eclipse或IDEA运行工程
B.3.1、Eclipse
B.3.2、IDEA