作品简介

本书全面、深入介绍了企业级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
展开全部