《轻量级Java Web企业应用实战》是由电子工业出版社出版的一本关于Java方面的书籍,作者是李刚,主要介绍了关于Java、Web、企业应用方面的知识内容,目前在Java类书籍综合评分为:7.1分。
书籍介绍
编辑推荐
《轻量级Java Web企业应用实战――Spring MVC Spring MyBatis整合开发》不是一份“X天精通Java EE开发”的“心灵鸡汤”,这是一本令人生畏的“砖头”书。
1. 内容实际,针对性强
本书介绍的Java EE应用示例,采用了目前企业流行的开发架构,严格遵守Java EE开发规范,而不是将各种技术杂乱地糅合在一起号称Java EE。读者参考本书的架构,完全可以身临其境地感受企业实际开发。
2.框架源代码级的讲解,深入透彻
本书针对Spring MVC、Spring、MyBatis框架核心部分的源代码进行了讲解,不仅能帮助读者真正掌握框架的本质,而且能让读者参考优秀框架的源代码快速提高自己的技术功底。
本书介绍的源代码解读方法还可消除开发者对阅读框架源代码的恐惧,让开发者在遇到技术问题时能冷静分析问题,从框架源代码层次找到问题根源。
3.丰富、翔实的代码,面向实战
本书是面向实战的技术图书,坚信所有知识点必须转换成代码才能*终变成有效的生产力,因此本书为所有知识点提供了对应的可执行的示例代码。代码不仅有细致的注释,还结合理论对示例进行了详细的解释,真正让读者做到学以致用。
内容简介
本书介绍了Java EE开发非常流行的三个开源框架:Spring MVC、Spring和MyBatis,其中Spring MVC、Spring用的是5.1版本,MyBatis用的是3.5版本。本书重点介绍了如何整合Spring MVC Spring MyBatis进行开发,内容主要包括三部分。*部分介绍Java EE开发的基础知识,以及如何搭建开发环境。第二部分详细讲解MyBatis、Spring和Spring MVC三个框架的用法,并从Eclipse IDE的使用上手,一步步带领读者深入三个框架的核心。这部分是本书的核心内容,因此也是重点部分。这部分并不是简单地讲授三个框架的基本用法,而是真正剖析它们在实际开发场景中面临的挑战及*实践,并对其诸多关键技术实现提供了源代码解读,这样既能加深读者对框架本质的理解,也能直接提升读者的Java功底。第三部分示范开发了一个包含7个表,表之间具有复杂的关联映射、继承映射等关系,且业务也相对复杂的工作流案例,帮助读者理论联系实际,将三个框架真正运用到实际开发中。该案例采用目前非常流行、规范的Java EE架构,整个应用分为领域对象层、Mapper(DAO)。层、业务逻辑层、MVC层和视图层,各层之间分层清晰,层与层之间以松耦合的方式组织在一起。该案例既提供了与IDE无关的、基于Ant管理的项目源代码,也提供了基于Eclipse IDE的项目源代码,*限度地满足读者的需求。本书配有读者答疑交流群,读者可通过扫描本书封面勒口上的二维码,按照指引加入,本书作者将通过交流群提供线上不定期答疑服务。
作者简介
李刚,十余年软件开发从业经验,疯狂软件教育中心教学总监。疯狂Java实训营创始人,疯狂Java体系原创图书作者。广东技术师范学院计算机科学系兼职副教授,CSDN特邀讲师。培训的学生已在腾讯、阿里、华为、IBM、网易、唯品会、电信盈科等名企就职。国内知名高端IT技术图书作家,已出版《疯狂Java讲义》《疯狂Android讲义》《轻量级Java EE企业应用实战》《疯狂前端开发讲义》《疯狂HTML5/CSS3/JavaScript讲义》等著作。其中疯狂Java体系图书均已沉淀多年,赢得极高的市场认同,多次重印,多部著作印刷数量超过10万册,并被多所“985”“211”院校选作教材,部分图书已被翻译成繁体中文版,授权到中国台湾地区。
目录
- 第1章 Java EE应用和开发环境 1
- 1.1 Java EE应用概述 2
- 1.1.1 Java EE应用的分层模型 2
- 1.1.2 Java EE应用的组件 3
- 1.1.3 Java EE应用的结构和优势 4
- 1.1.4 常用的Java EE服务器 4
- 1.2 轻量级Java EE应用相关技术 5
- 1.2.1 JSP、Servlet 4.x和JavaBean及替代技术 5
- 1.2.2 Spring MVC及替代技术 6
- 1.2.3 MyBatis及替代技术 6
- 1.2.4 Spring及替代技术 7
- 1.3 Tomcat的下载和安装 8
- 1.3.1 安装Tomcat服务器 8
- 1.3.2 配置Tomcat的服务端口 9
- 1.3.3 进入控制台 10
- 1.3.4 部署Web应用 12
- 1.3.5 配置Tomcat的数据源 13
- 1.4 Eclipse的安装和使用 15
- 1.4.1 Eclipse的下载和安装 15
- 1.4.2 在线安装Eclipse插件 15
- 1.4.3 从本地压缩包安装插件 17
- 1.4.4 手动安装Eclipse插件 18
- 1.4.5 使用Eclipse开发Java Web应用 18
- 1.4.6 导入Eclipse项目 21
- 1.4.7 导入非Eclipse项目 22
- 1.5 Ant的安装和使用 23
- 1.5.1 Ant的下载和安装 24
- 1.5.2 使用Ant工具 25
- 1.5.3 定义生成文件 26
- 1.5.4 Ant的任务(task) 30
- 1.6 Maven的安装和使用 32
- 1.6.1 下载和安装Maven 33
- 1.6.2 设置Maven 34
- 1.6.3 创建、构建简单的项目 35
- 1.6.4 Maven的核心概念 39
- 1.6.5 依赖管理 44
- 1.6.6 POM文件的元素 46
- 1.7 使用Git进行软件配置管理(SCM) 47
- 1.7.1 下载和安装Git、TortoiseGit 47
- 1.7.2 创建本地资源库 49
- 1.7.3 添加文件和文件夹 51
- 1.7.4 提交修改 52
- 1.7.5 查看文件或文件夹的版本变更 53
- 1.7.6 删除文件或文件夹 54
- 1.7.7 从以前版本重新开始 55
- 1.7.8 克隆项目 56
- 1.7.9 创建分支 56
- 1.7.10 沿着分支开发 57
- 1.7.11 合并分支 58
- 1.7.12 使用Eclipse作为Git客户端 59
- 1.7.13 配置远程中央资源库 61
- 1.7.14 推送项目 64
- 1.7.15 获取项目和拉取项目 64
- 1.8 本章小结 66
- 第2章 MyBatis的基础用法 67
- 2.1 MyBatis是ORM框架吗 68
- 2.1.1 何谓ORM 68
- 2.1.2 ORM的映射方式 69
- 2.1.3 MyBatis的映射方式 70
- 2.2 MyBatis入门 71
- 2.2.1 MyBatis的下载和安装 72
- 2.2.2 MyBatis的数据库操作 72
- 2.2.3 使用MyBatis执行CRUD 78
- 2.2.4 利用Mapper对象 80
- 2.2.5 在Eclipse中使用MyBatis 84
- 2.3 MyBatis核心API及作用域 90
- 2.3.1 SqlSessionFactoryBuilder的作用域 90
- 2.3.2 SqlSessionFactory的作用域 91
- 2.3.3 SqlSession及其作用域 92
- 2.3.4 Mapper组件的作用域 94
- 2.4 MyBatis配置详解 94
- 2.4.1 属性配置 95
- 2.4.2 设置配置 98
- 2.4.3 为类型配置别名 101
- 2.4.4 对象工厂 103
- 2.4.5 加载Mapper 105
- 2.5 类型处理器 106
- 2.5.1 内置的类型处理器 106
- 2.5.2 自定义类型处理器 107
- 2.5.3 枚举的类型处理器 111
- 2.5.4 存储枚举值的序号 112
- 2.5.5 同时存储枚举值的名称和序号 113
- 2.6 数据库环境配置 116
- 2.6.1 环境配置与默认环境配置 116
- 2.6.2 事务管理器 117
- 2.6.3 数据源配置 121
- 2.6.4 配置第三方C3P0数据源 122
- 2.7 支持不同类型的数据库 124
- 2.8 Mapper基础 127
- 2.8.1 select的用法 128
- 2.8.2 insert的用法 130
- 2.8.3 使用useGeneratedKeys返回 自增长的主键值 131
- 2.8.4 使用selectKey生成主键值 132
- 2.8.5 update和delete元素的用法 134
- 2.8.6 使用sql元素定义可复用的SQL片段 134
- 2.8.7 参数处理 136
- 2.8.8 参数的额外声明 142
- 2.8.9 字符串替换 142
- 2.9 MyBatis代码生成器 144
- 2.9.1 提供配置文件 145
- 2.9.2 运行MBG 146
- 2.10 本章小结 149
- 第3章 深入使用MyBatis 151
- 3.1 结果集映射 152
- 3.1.1 简单resultMap映射 152
- 3.1.2 构造器映射 154
- 3.1.3 自动映射 157
- 3.2 调用存储过程 159
- 3.2.1 调用返回结果集的存储过程 159
- 3.2.2 调用带out模式参数的存储过程 160
- 3.2.3 调用传出参数为游标引用的存储过程 162
- 3.3 关联映射 165
- 3.3.1 基于嵌套select的一对一映射 165
- 3.3.2 基于嵌套select映射策略的性能缺陷 171
- 3.3.3 延迟加载的原理 175
- 3.3.4 基于多表连接查询的一对一映射 176
- 3.3.5 基于多结果集的一对一映射 182
- 3.3.6 基于嵌套select的一对多映射 184
- 3.3.7 基于多表连接查询的一对多映射 191
- 3.3.8 基于多结果集的一对多映射 192
- 3.3.9 多对多映射的三种策略 194
- 3.4 基于辨别者列的继承映射 201
- 3.4.1 继承映射的简单示例 201
- 3.4.2 继承映射的复杂示例 205
- 3.5 动态SQL 210
- 3.5.1 if元素的用法 210
- 3.5.2 在update更新列中使用if 216
- 3.5.3 在insert动态插入列中使用if 219
- 3.5.4 choose、when、otherwise元素的 用法 222
- 3.5.5 where与trim的用法 225
- 3.5.6 set与trim的用法 228
- 3.5.7 使用trim实现动态插入 230
- 3.5.8 foreach元素的基本用法 232
- 3.5.9 foreach实现批量插入 234
- 3.5.10 foreach实现批量更新 236
- 3.5.11 bind元素的用法 239
- 3.6 缓存 240
- 3.6.1 一级缓存 240
- 3.6.2 一级缓存的脏数据与避免方法 243
- 3.6.3 二级缓存 246
- 3.6.4 二级缓存的脏数据与避免方法 248
- 3.6.5 整合Ehcache实现二级缓存 252
- 3.7 用插件扩展MyBatis 254
- 3.7.1 拦截器接口及作用原理 254
- 3.7.2 可拦截的目标 256
- 3.7.3 为MyBatis开发分页插件 260
- 3.8 本章小结 266
- 第4章 Spring的基础用法 267
- 4.1 Spring简介和Spring 5的变化 268
- 4.1.1 Spring简介 268
- 4.1.2 Spring 5.x的变化 269
- 4.2 Spring入门 269
- 4.2.1 Spring的下载和安装 270
- 4.2.2 使用Spring管理Bean 270
- 4.2.3 在Eclipse中使用Spring 274
- 4.3 Spring的核心机制:依赖注入 276
- 4.3.1 理解依赖注入 277
- 4.3.2 设值注入 278
- 4.3.3 构造注入 282
- 4.3.4 两种注入方式的对比 284
- 4.4 使用Spring容器 284
- 4.4.1 Spring容器 284
- 4.4.2 使用ApplicationContext 286
- 4.4.3 ApplicationContext的国际化支持 287
- 4.4.4 ApplicationContext的事件机制 289
- 4.4.5 让Bean获取Spring容器 292
- 4.5 Spring容器中的Bean 294
- 4.5.1 Bean的基本定义和Bean别名 294
- 4.5.2 容器中Bean的作用域 295
- 4.5.3 配置依赖 299
- 4.5.4 设置普通属性值 300
- 4.5.5 配置合作者Bean 302
- 4.5.6 使用自动装配注入合作者Bean 302
- 4.5.7 注入嵌套Bean 305
- 4.5.8 注入集合值 306
- 4.5.9 组合属性 311
- 4.5.10 Spring的Bean和JavaBean 312
- 4.6 Spring的Java配置管理 313
- 4.7 创建Bean的三种方式 316
- 4.7.1 使用构造器创建Bean 316
- 4.7.2 使用静态工厂方法创建Bean 317
- 4.7.3 使用实例工厂方法创建Bean 319
- 4.8 深入理解容器中的Bean 321
- 4.8.1 抽象Bean与子Bean 322
- 4.8.2 Bean继承与Java继承的区别 323
- 4.8.3 容器中的工厂Bean 323
- 4.8.4 获得Bean本身的id 326
- 4.8.5 强制初始化Bean 327
- 4.9 容器中Bean的生命周期 327
- 4.9.1 依赖关系注入之后的行为 328
- 4.9.2 Bean销毁之前的行为 330
- 4.9.3 协调作用域不同步的Bean 332
- 4.10 高级依赖关系配置 336
- 4.10.1 获取其他Bean的属性值 336
- 4.10.2 获取Field值 339
- 4.10.3 获取方法的返回值 341
- 4.11 基于XML Schema的简化配置方式 344
- 4.11.1 使用p:命名空间简化配置 344
- 4.11.2 使用c:命名空间简化配置 345
- 4.11.3 使用util:命名空间简化配置 347
- 4.12 Spring表达式语言 349
- 4.12.1 使用Expression接口进行表达式求值 350
- 4.12.2 Bean定义中的表达式语言支持 352
- 4.12.3 SpEL语法详述 353
- 4.13 本章小结 358
- 第5章 深入使用Spring 359
- 5.1 两种后处理器 360
- 5.1.1 Bean后处理器 360
- 5.1.2 Bean后处理器的用处 364
- 5.1.3 容器后处理器 364
- 5.1.4 属性占位符配置器 366
- 5.1.5 重写占位符配置器 367
- 5.2 “零配置”支持 368
- 5.2.1 搜索Bean类 368
- 5.2.2 指定Bean的作用域 371
- 5.2.3 使用@Resource、@Value配置依赖 372
- 5.2.4 使用@PostConstruct和@PreDestroy定制生命周期行为 373
- 5.2.5 @DependsOn和@Lazy 374
- 5.2.6 自动装配和精确装配 374
- 5.2.7 Spring 5新增的注解 379
- 5.3 资源访问 380
- 5.3.1 Resource实现类 381
- 5.3.2 ResourceLoader接口和 ResourceLoaderAware接口 385
- 5.3.3 使用Resource作为属性 388
- 5.3.4 在ApplicationContext中使用资源 389
- 5.4 Spring的AOP 392
- 5.4.1 为什么需要AOP 393
- 5.4.2 使用AspectJ实现AOP 394
- 5.4.3 AOP的基本概念 401
- 5.4.4 Spring的AOP支持 402
- 5.4.5 基于注解的“零配置”方式 403
- 5.4.6 基于XML配置文件的管理方式 418
- 5.5 Spring的缓存机制 424
- 5.5.1 启用Spring缓存 425
- 5.5.2 使用@Cacheable执行缓存 427
- 5.5.3 使用@CacheEvict清除缓存数据 431
- 5.6 Spring的事务 433
- 5.6.1 Spring支持的事务策略 433
- 5.6.2 使用XML Schema配置事务策略 436
- 5.6.3 使用@Transactional 442
- 5.7 Spring整合MyBatis 443
- 5.7.1 整合MyBatis的关