目录


第1篇构 建 工 具
第1章初识构建工具31.1安装和配置JDK3
1.1.1下载JDK3
1.1.2安装JDK3
1.1.3配置环境变量4
1.1.4测试安装4
1.2初识构建工具6
1.2.1编写Hello类6
1.2.2编译6
1.2.3运行7
1.2.4打包7
1.2.5运行打包文件8
第2章深入构建工具9
2.1构建项目9
2.1.1创建目录9
2.1.2依赖库文件9
2.1.3编写应用类9
2.2编译11
2.2.1javac编译选项11
2.2.2javac编译命令要素11
2.2.3查找依赖类12
2.2.4手工编译源文件13
2.2.5手工编译整个项目15
2.2.6乱码问题15
2.3打包16
2.3.1jar包结构16
2.3.2jar打包命令详解16
2.3.3打包应用17
2.3.4创建可执行的jar包18
2.3.5手工打包整个项目19
2.4运行20
2.4.1java命令详解20
2.4.2java命令的运行方式21
2.4.3Java运行要素22
2.4.4依赖库加载方案22
2.4.5引导类加载方案23
2.4.6扩展类加载方案23
2.4.7用户类加载方案23
2.4.8ClassLoader方案25
〖3〗轻量级Java EE Web框架技术——Spring MVC+Spring+MyBatis+Spring Boot目录〖3〗第3章Ant构建工具26
3.1Ant的特点26
3.2下载、安装和测试Ant26
3.2.1下载Ant26
3.2.2安装Ant26
3.2.3测试Ant27
3.3初识Ant27
3.3.1build.xml文件27
3.3.2创建目录28
3.3.3编译任务29
3.3.4打包任务30
3.3.5运行任务30
3.3.6清除任务31
3.3.7重新运行任务31
3.3.8生成清单文件32
3.4Ant文件命令32
3.4.1创建目录命令32
3.4.2复制命令33
3.4.3删除命令33
3.4.4移动命令34
3.5其他命令35
3.5.1时间戳命令35
3.5.2执行SQL语句36
3.6深入Ant36
3.6.1创建目录37
3.6.2清除项目37
3.6.3编译项目37
3.6.4classpath构建39
3.6.5打包项目40
3.6.6运行项目41
3.6.7打包可执行的jar(依赖外部)42
3.6.8打包可执行的jar(独立运行)44
第4章Maven构建工具46
4.1Maven的安装与配置46
4.1.1下载46
4.1.2设置系统环境变量46
4.1.3检测安装47
4.2Maven的基本概念48
4.2.1库文件管理48
4.2.2配置文件的作用48
4.2.3Maven项目坐标49
4.2.4配置项目依赖库50
4.2.5项目构建配置信息50
4.2.6Maven项目目录结构51
4.2.7Maven与Ant的对比51
4.3Maven仓库52
4.3.1仓库管理52
4.3.2本地仓库52
4.3.3远程仓库53
4.3.4Maven坐标与仓库路径的约定53
4.3.5Maven依赖库的作用域54
4.4创建项目55
4.4.1生成项目骨架插件55
4.4.2Maven创建项目的命令56
4.4.3可用项目骨架56
4.5创建Java项目58
4.5.1创建命令58
4.5.2下载的库文件59
4.5.3Maven自动创建的目录结构59
4.5.4Maven自动创建的pom.xml文件60
4.5.5Maven自动创建的Java类App.java60
4.5.6Maven自动创建的测试类AppTest.java61
4.6编译项目62
4.6.1编译命令62
4.6.2编译生成class文件62
4.7打包项目63
4.7.1打包命令63
4.7.2生成jar包文件64
4.7.3运行项目64
4.8清除编译结果64
4.9安装项目65
4.10镜像仓库配置66
4.10.1全局配置66
4.10.2单个项目依赖库镜像配置67
4.10.3单个项目插件库镜像配置68
第5章深入Maven构建工具71
5.1Maven生命周期71
5.1.1项目构建过程与Maven生命周期71
5.1.2Clean生命周期72
5.1.3Default生命周期72
5.1.4Site生命周期73
5.1.5生命周期内各阶段和生命周期之间的关系74
5.1.6Maven常用命令74
5.2Maven插件74
5.2.1Maven插件框架74
5.2.2与生命周期有关的插件74
5.2.3插件调用方式76
5.2.4插件调用方式的差异76
5.2.5插件的配置79
5.2.6绑定生命周期与插件目标79
5.3Maven构建配置80
5.3.1<build>标签80
5.3.2基本元素配置标签81
5.3.3<resources>标签81
5.3.4<plugins>标签82
5.3.5<pluginManagement>标签83
5.4编译插件84
5.5打包插件84
5.5.1增加helloapp功能84
5.5.2常用的打包插件85
5.6用jar与dependency插件打包与运行86
5.6.1创建可运行的jar86
5.6.2设置启动类87
5.6.3设置库路径87
5.6.4利用mavendependencyplugin复制jar包87
5.6.5打包安装88
5.6.6运行包89
5.7用mavenassemblyplugin插件打包与运行89
5.7.1配置mavenassemblyplugin插件89
5.7.2创建可执行的jar包90
5.7.3绑定到default生命周期打包阶段90
5.7.4jar包命名91
5.7.5打包安装91
5.7.6运行包92
5.7.7jar包文件分析92
5.8利用mavenjarplugin与mavenassemblyplugin插件打包与运行93
5.8.1mavenassemblyplugin插件配置93
5.8.2deployment.xml文件配置93
5.8.3打包安装94
5.8.4运行包95
第6章构建工具Eclipse96
6.1Eclipse下载、安装和运行96
6.1.1Eclipse下载96
6.1.2Eclipse安装和运行96
6.2Java项目的编译98
6.2.1编译Java项目需要的条件98
6.2.2javac命令98
6.2.3在Maven中编译98
6.2.4在Eclipse中编译98
6.3在Eclipse中编译、打包和运行99
6.3.1创建应用99
6.3.2在开发环境下运行Java程序99
6.3.3配置构建路径99
6.3.4编译项目100
6.3.5打包项目101
6.3.6运行jar包104
第7章在Eclipse中使用Maven106
7.1在Eclipse中集成Maven106
7.1.1在Eclipse中安装Maven106
7.1.2在Eclipse中设置Maven106
7.1.3在Eclipse中设置Maven配置文件106
7.1.4更改Java环境为JDK108
7.2在Eclipse中管理Maven项目109
7.2.1打开Maven创建的项目109
7.2.2恢复项目依赖库110
7.2.3一般项目与Maven项目的互相转换112
7.2.4创建Maven项目helloapp1112
7.2.5使用Maven打包114
7.3管理pom.xml文件115
7.3.1总览pom.xml115
7.3.2依赖管理116
7.3.3查看依赖关系层次结构117
7.3.4全面查看pom.xml117
7.3.5文本编译页面118
本篇参考文献119
第2篇Spring MVC
第8章构建Web应用程序1238.1Tomcat的下载、安装和启停123
8.1.1下载Tomcat123
8.1.2安装Tomcat123
8.1.3启动和停止Tomcat服务126
8.2在Eclipse中管理Tomcat126
8.2.1添加Tomcat服务器126
8.2.2配置Tomcat服务器128
8.2.3管理Tomcat服务器130
8.3建立动态Web工程130
8.3.1建立动态Web工程WebHello130
8.3.2库文件路径130
8.3.3创建类TestMath.java132
8.3.4创建hello.jsp133
8.3.5目录结构134
8.4编译134
8.4.1设置编译的输出路径134
8.4.2编译项目135
8.5部署137
8.5.1配置部署路径137
8.5.2部署项目138
8.5.3重新部署141
8.6发布测试141
第9章用Maven构建Web应用程序143
9.1在Eclipse中创建Maven Web项目143
9.2完善项目145
9.2.1修改JDK版本146
9.2.2完善项目目录147
9.2.3修改编译版本147
9.2.4修改Project Facets的Java版本147
9.2.5添加Tomcat库文件148
9.2.6修改Project Facets的Runtimes150
9.2.7修改Project Facets的Dynamic Web Module版本152
9.3库文件管理153
9.3.1添加Maven依赖库153
9.3.2Eclipse中的Maven库153
9.4编写程序154
9.4.1创建类TestMath.java154
9.4.2创建hello.jsp154
9.4.3目录结构155
9.5用Eclipse编译Maven项目156
9.6在Eclipse中部署Maven项目157
9.7用Maven管理项目158
9.7.1设置Maven中的JDK版本158
9.7.2编译项目158
9.7.3打包项目159
9.7.4自定义打包160
9.8Maven依赖的添加161
9.8.1进入Maven网站161
9.8.2查找依赖的jar包161
9.8.3选择版本161
9.8.4复制依赖xml文件内容163
9.8.5修改pom.xml163
9.8.6自动下载库164
9.9动态Web工程与Maven Web项目的区别164
第10章MVC框架166
10.1MVC概述166
10.1.1模型166
10.1.2视图166
10.1.3控制器166
10.2MVC框架的产生167
10.2.1静态网页167
10.2.2动态网页168
10.2.3JSP技术170
10.2.4Servlet+JSP+JavaBean开发模式172
10.2.5MVC框架实现彻底解耦173
10.3Spring MVC的第一个示例174
10.3.1创建动态Web项目174
10.3.2复制Spring MVC库文件174
10.3.3配置web.xml接管Web请求174
10.3.4Spring MVC配置文件的框架176
10.3.5配置扫描注解177
10.3.6配置视图页面177
10.3.7编写Controller类177
10.3.8编写视图178
10.3.9运行项目178
10.4Web应用与MVC179
10.4.1Web应用模型179
10.4.2Web应用中的MVC179
10.4.3解耦原理180
10.4.4Spring MVC处理请求的过程181
10.5学习MVC框架的思路182
10.5.1函数描述与调用182
10.5.2Web请求182
10.5.3对MVC框架的理解182
第11章Spring MVC中的URL请求调用控制器的方法183
11.1概述183
11.2创建动态Web项目183
11.2.1编写控制器类183
11.2.2编写显示日期的视图184
11.2.3编写显示结果说明的视图184
11.3配置web.xml拦截URL请求185
11.3.1拦截带扩展名的请求185
11.3.2拦截所有请求185
11.3.3对静态资源文件放行186
11.4使用@Controller定义控制器186
11.4.1控制器的定义186
11.4.2Spring MVC对控制器组件的管理186
11.5使用@RequestMapping建立映射关系187
11.5.1@RequestMapping注解187
11.5.2处理多个URL188
11.5.3使用URL模板189
11.5.4用params属性处理特定请求参数191
11.5.5用method属性处理HTTP的方法192
11.5.6@RequestMapping的组合注解194
11.5.7@RequestMapping默认的处理方法194
11.6URL请求传递参数到控制器195
11.6.1概述195
11.6.2方法支持的参数类型195
11.6.3直接将请求参数名作为控制器类方法的形参196
11.6.4使用@RequestParam绑定URL请求参数196
11.6.5使用URL请求中的占位符参数接收参数197
11.6.6使用Pojo对象接收参数198
11.6.7使用@CookieValue获取cookie值199
11.6.8使用@RequestHeader获取报文头200
11.6.9使用HttpServletRequest、HttpSession获取参数201
11.7URL请求传递JSON数据201
11.7.1概述201
11.7.2测试客户端202
11.7.3使用@RequestBody接收报文体204
11.7.4使用@ResponseBody返回报文体204
11.7.5使用Pojo对象接收JSON数据204
11.7.6使用Map方式接收JSON数据205
11.7.7使用List方式接收JSON数据205
11.7.8使用字符串方式接收JSON数据205
第12章使用Spring MVC中的控制器调用视图207
12.1控制器调用视图207
12.1.1概述207
12.1.2控制器支持的返回类型207
12.1.3返回String类型的视图名称208
12.1.4返回ModelAndView对象209
12.1.5返回void209
12.1.6返回Map对象210
12.1.7Spring MVC的转发与重定向211
12.2控制器返回数据213
12.2.1使用@ResponseBody返回报文体213
12.2.2使用@RequestMapping的produces属性描述报文体215
12.2.3使用响应文本流Writer输出文本215
12.2.4使用HttpServletResponse输出文本216
12.3返回JSON数据217
12.3.1创建Controller类217
12.3.2返回实体对象217
12.3.3返回List对象218
12.3.4返回Map对象218
12.3.5返回字符串219
12.3.6使用@RestController生成RESTful API219
12.4@ResponseStatus注解220
12.4.1改变响应状态码220
12.4.2用@RequestMapping自定义异常应用221
12.5返回ResponseEntity类型223
12.5.1返回JSON字符串223
12.5.2返回字符串224
12.5.3设置ContentType响应头224
12.5.4添加任意响应头信息225
12.5.5返回指定状态码225
12.5.6通过静态方法获得响应实体对象226
12.5.7ResponseEntity的替代方法227
12.6控制器传递数据到视图229
12.6.1概述229
12.6.2创建控制器类229
12.6.3通过Model对象传递数据230
12.6.4通过Map对象传递数据230
12.6.5以Map对象作为返回参数传递数据231
12.6.6通过ModelAndView对象传递数据231
12.6.7使用@ModelAttribute传递和保存数据231
12.6.8使用@SessionAttributes传递和保存数据233
12.7用视图获取参数值236
12.7.1实例236
12.7.2EL表达式取值237
第13章Spring MVC高级应用238
13.1Spring MVC拦截器简介238
13.2实现Spring MVC拦截器238
13.2.1实现拦截器的方法238
13.2.2实现HandlerInterceptor接口239
13.2.3实现WebRequestInterceptor接口241
13.3登录权限验证243
13.3.1编写登录权限验证拦截器243
13.3.2编写登录控制器244
13.3.3配置拦截器247
13.3.4编写登录页面248
13.3.5编写主页面248
13.3.6编写查看图书页面249
13.3.7运行结果249
13.4文件上传250
13.4.1Spring MVC MultipartFile250
13.4.2装配MultipartResolver处理上传251
13.4.3复制库文件251
13.4.4创建上传页面251
13.4.5创建上传成功页面252
13.4.6编写上传控制器类253
13.4.7运行结果254
13.5文件下载255
13.5.1通过ResponseEntity下载文件255
13.5.2通过@ResponseBody返回字节数组257
13.5.3通过原生的HttpServletResponse对象下载文件260
13.6Spring MVC的表单标签库262
13.6.1引入表单标签库262
13.6.2表单标签库中的标签262
13.6.3表单标签的用法262
13.6.4表单元素标签的用法263
13.7Spring MVC表单标签实例266
13.7.1编写用户类266
13.7.2编写添加用户页面267
13.7.3编写显示用户信息页面269
13.7.4创建UserController控制器类270
13.7.5解决乱码问题271
13.7.6运行结果272
13.8Spring MVC国际化273
13.8.1软件国际化概述273
13.8.2国际化方案273
13.8.3存储国际化信息273
13.8.4取出国际化信息274
13.9基于浏览器的国际化274
13.9.1建立资源文件275
13.9.2在login.jsp页面输出国际化信息275
13.9.3在welcome.jsp页面输出国际化信息276
13.9.4在Spring MVC配置文件中配置国际化支持277
13.9.5编写用户类277
13.9.6在程序中获取国际化信息278
13.9.7运行结果279
13.10基于会话的国际化282
13.10.1配置支持基于会话的国际化282
13.10.2处理语言设置282
13.10.3创建可以选择语言的登录页面283
13.10.4运行结果284
13.11基于会话的国际化(语言设置自动处理)285
13.11.1配置语言设置处理285
13.11.2创建登录页面286
13.11.3运行结果287
本篇参考文献288
第3篇MyBatis ORM框架
第14章MyBatis中的ORM29114.1ORM的概念291
14.1.1对象和关系数据库291
14.1.2ORM的概念291
14.2JDBC持久化293
14.2.1JDBC持久化的特点293
14.2.2JDBC的体系结构293
14.2.3JDBC的执行流程293
14.2.4DriverManager中的解耦295
14.3JDBC中的对象和关系数据库296
14.3.1配置库文件297
14.3.2获取数据库连接297
14.3.3关闭数据库连接298
14.3.4定义对象299
14.3.5定义关系300
14.3.6写数据库301
14.3.7读数据库302
14.3.8测试303
14.4ORM框架持久化303
14.4.1ORM框架简介303
14.4.2MyBatis简介304
14.5MyBatis的用法305
14.5.1配置库文件305
14.5.2映射信息305
14.5.3映射文件306
14.5.4MyBatis配置文件307
14.5.5调用映射文件中的命令id309
14.5.6约定表字段名与对象属性名的映射关系312
14.5.7约定表字段的SQL别名与对象属性名的映射关系313
14.5.8通过resultMap配置嵌套映射关系314
14.5.9MyBatis小结315
第15章MyBatis读取数据库316
15.1<select>标签316
15.1.1输入参数类型316
15.1.2输出参数类型317
15.1.3标签体中的SQL语句317
15.1.4创建映射配置文件317
15.1.5创建测试类318
15.2<select>标签返回数据318
15.2.1返回实体对象318
15.2.2通过resultMap标示返回返回结果的类型319
15.2.3返回实体对象集合320
15.2.4返回HashMap321
15.2.5返回HashMap集合322
15.2.6返回Map型实体集合322
15.2.7返回Map型Map集合323
15.3resultMap324
15.3.1resultMap简介324
15.3.2表名与类名映射325
15.3.3表字段与对象属性映射325
15.3.4表主键字段映射326
15.4多表关联查询327
15.4.1创建账户表account327
15.4.2创建账户类Account327
15.4.3创建账户映射配置文件accountMapper.xml328
15.4.4创建学生账户类StudentAccount329
15.4.5创建学生账户映射配置文件StudentAccountMapper.xml329
15.4.6创建课程表course330
15.4.7创建学生课程表student_course330
15.4.8创建课程类Course330
15.4.9创建学生课程类StudentCourse331
15.4.10创建学生课程映射配置文件StudentCourseMapper.xml332
15.4.11映射要素332
15.5一对一关联映射查询332
15.5.1用级联属性配置映射332
15.5.2关联子配置嵌套映射334
15.5.3关联resultMap配置嵌套映射336
15.5.4关联查询配置嵌套映射337
15.6一对多关联映射查询339
15.6.1集合元素配置嵌套映射339
15.6.2集合resultMap配置嵌套映射342
15.6.3集合查询配置嵌套映射343
15.7多对多关联映射查询345
15.7.1返回多条记录345
15.7.2集合配置嵌套映射346
15.7.3双向多对多输出348
第16章MyBatis写数据库350
16.1简介350
16.1.1MyBatis中的DAO框架350
16.1.2DAO模式351
16.2创建用户表及用户类351
16.2.1创建用户表user351
16.2.2编写实体类User351
16.3在Mapper文件中定义命令353
16.3.1增加标签353
16.3.2删除标签354
16.3.3修改标签354
16.3.4查询标签354
16.4DAO层调用Mapper映射文件中的命令355
16.4.1MyBatis的构建流程355
16.4.2MyBatis的执行流程356
16.4.3构建SqlSessionFactory357
16.4.4从SqlSessionFactory中获取SqlSession358
16.4.5通过SqlSession执行命令359
16.5调用Mapper命令示例359
16.5.1增加用户359
16.5.2删除用户360
16.5.3修改用户信息360
16.5.4查询用户信息361
16.5.5运行结果362
16.6原始DAO层开发362
16.6.1Mapper配置文件namespace属性362
16.6.2Mapper配置文件的加载363
16.6.3定义访问接口363
16.6.4编写访问接口的实现363
16.6.5测试代码365
16.6.6运行结果366
16.7Mapper动态代理方式DAO层开发366
16.7.1Mapper配置文件中的namespace属性366
16.7.2Mapper接口367
16.7.3通过动态代理获取DAO对象368
16.7.4运行结果369
16.8Mapper配置文件的加载370
16.8.1Mapper接口类方式370
16.8.2包路径方式370
16.8.3资源文件方式370
16.9DAO中的参数传递371
16.9.1创建Mapper接口371
16.9.2创建Mapper配置文件371
16.9.3创建测试类372
16.9.4使用实体传参372
16.9.5使用Map对象传参373
16.9.6使用顺序号传参374
16.9.7使用@Param注解传参375
16.9.8使用@Param注解定义的实体参数名传参376
16.9.9使用List传参377
16.9.10使用${…}传参379
第17章MyBatis高级应用381
17.1MyBatis的动态SQL381
17.1.1MyBatis动态标签381
17.1.2创建Mapper接口381
17.1.3创建测试类382
17.2动态SQL条件判断382
17.2.1语句说明382
17.2.2根据查询条件实现动态查询384
17.2.3使用<choose>标签实现动态查询385
17.2.4根据参数值动态更新某些字段387
17.3动态SQL内容处理388
17.3.1where语句处理388
17.3.2用<trim>标签处理where语句390
17.3.3set语句391
17.3.4bind元素定义参数393
17.3.5<selectKey>标签394
17.3.6多数据库厂商支持395
17.4直接执行SQL语句396
17.4.1创建Mapper接口396
17.4.2创建映射文件396
17.4.3创建测试类397
17.4.4查询单个记录397
17.4.5查询多个记录398
17.4.6修改记录399
17.4.7增加记录399
17.4.8删除记录400
17.4.9完整代码401
17.5SQL语句构建器402
17.5.1问题402
17.5.2解决方法402
17.5.3构建器命令详解403
17.6构建器应用404
17.6.1查询单个记录404
17.6.2查询多个记录405
17.6.3删除记录405
17.6.4增加记录406
17.6.5修改记录406
17.7MyBatis注解407
17.7.1简介407
17.7.2注解命令407
17.7.3注解接口410
17.7.4测试类411
17.8注解SQL的Provider方式412
17.8.1创建Mapper接口412
17.8.2创建SQL提供类413
17.8.3创建测试类413
17.8.4@SelectProvider注解413
17.8.5@InsertProvider注解415
17.8.6@UpdateProvider注解416
17.8.7@DeleteProvider注解418
本篇参考文献420
第4篇Spring与Spring容器
第18章Spring概述42318.1传统对象的创建423
18.1.1对象创建者与使用者的关系423
18.1.2创建Maven项目423
18.1.3创建Food类423
18.1.4创建Person1类424
18.1.5测试与小结424
18.2使用工厂创建对象425
18.2.1对象创建者与使用者的关系425
18.2.2创建工厂FoodFactory类425
18.2.3创建Person2类426
18.2.4测试与小结426
18.3使用Spring创建对象427
18.3.1对象创建者与使用者的关系427
18.3.2添加Spring的Maven依赖427
18.3.3创建Person3类427
18.3.4Spring Bean配置428
18.3.5测试与小结429
第19章Spring容器431
19.1控制反转431
19.2依赖查找432
19.2.1依赖查找的概念432
19.2.2用JDBC获取数据库连接432
19.2.3用JNDI获取数据源433
19.3依赖注入435
19.3.1依赖注入的概念435
19.3.2构造子注入436
19.3.3设置注入437
19.3.4接口注入439
19.3.5小结441
19.4Bean的单例与多例模式442
19.4.1Bean的作用域442
19.4.2饿汉模式和懒汉模式442
19.4.3单例与多例的应用场景442
19.4.4单例测试443
19.4.5多例测试444
19.5Bean的实例化445
19.5.1构造方法445
19.5.2静态工厂方法446
19.5.3实例化工厂方法446
19.5.4测试447
19.6自动装配447
19.6.1指定装配448
19.6.2按类型装配448
19.6.3按名称装配448
19.6.4按构造方法参数类型装配448
19.6.5全局自动装配449
19.7容器的生命周期450
19.7.1容器的生命周期概述450
19.7.2容器的启动450
19.7.3创建Bean452
19.7.4获取Bean452
19.7.5容器的关闭453
19.8Bean的生命周期453
19.8.1Bean生命周期概述453
19.8.2感知接口454
19.8.3Bean获取自己的名称455
19.8.4在Bean中获取Bean工厂455
19.8.5Bean的初始化与销毁前事件455
19.8.6配置实现Bean初始化方法455
19.8.7接口实现Bean初始化方法456
19.8.8配置实现Bean销毁前方法456
19.8.9接口实现Bean销毁前方法456
19.8.10Bean生命周期测试457
第20章Spring注解配置459
20.1配置Bean的方式459
20.1.1Spring Bean的3种配置方式459
20.1.2XML配置方式459
20.2Spring注解配置460
20.2.1注解的特点460
20.2.2注解与XML配置的区别461
20.2.3配置要扫描的包461
20.2.4注解Spring组件462
20.2.5Bean的作用域463
20.3注解自动装配463
20.3.1基本类型属性注入463
20.3.2按类型装配(@Autowired)464
20.3.3按名称装配(@Autowired与@Qualifier)464
20.3.4@Autowired的required属性464
20.3.5按类型装配(@Resource)464
20.3.6按名称装配(@esource(name="xxx"))465
20.4注解Bean的生命周期465
20.4.1Bean初始化465
20.4.2Bean销毁前465
20.5基于JavaConfig类的Bean配置465
20.5.1JavaConfig类465
20.5.2加载JavaConfig类启动容器466
20.6使用JavaConfig类手动装配467
20.6.1调用创建Bean的方法装配Bean467
20.6.2通过创建Bean的方法的参数装配Bean467
20.6.3在创建Bean的方法中直接实例化Bean468
20.7使用JavaConfig类自动装配468
20.7.1按类型装配Bean468
20.7.2按名称装配Bean468
20.8JavaConfig配置生命周期469
20.8.1Bean初始化469
20.8.2Bean销毁前469
20.9JavaConfig类实例模式配置469
20.9.1单例模式469
20.9.2多例模式470
20.10JavaConfig类中的组件扫描470
20.10.1默认扫描包470
20.10.2指定扫描包471
20.10.3排除扫描特定类471
20.10.4扫描特定类471
第21章Spring扩展473
21.1概述473
21.2多个配置文件473
21.2.1<import>标签473
21.2.2@Import注解474
21.2.3@Import ImportSelector474
21.3动态创建Bean475
21.3.1概述475
21.3.2FactoryBean接口476
21.3.3FactoryBean示例476
21.3.4Spring与MyBatis整合中的FactoryBean示例477
21.4动态注册Bean定义: BeanDefinitionRegistryPostProcessor478
21.4.1概述478
21.4.2BeanDefinitionRegistryPostProcessor接口478
21.4.3BeanDefinitionRegistryPostProcessor示例479
21.4.4配置类后处理器480
21.4.5配置类后处理器的处理机制481
21.5动态注册Bean定义: ImportBeanDefintionRegistrar482
21.5.1ImportBeanDefintionRegistrar接口482
21.5.2处理机制482
21.5.3ImportBeanDefintionRegistrar示例483
21.6动态修改Bean定义: BeanFactoryPostProcessor485
21.6.1BeanFactoryPostProcessor概述485
21.6.2BeanFactoryPostProcessor示例485
21.7动态修改Bean: BeanPostProcessor487
21.7.1BeanPostProcessor概述487
21.7.2BeanPostProcessor示例488
21.7.3自定义注解的实现489
第22章Spring与MyBatis整合495
22.1创建Maven项目SpringMyBatis495
22.2Spring配置文件496
22.3数据源Bean的管理和配置497
22.3.1数据源依赖包497
22.3.2数据库信息配置498
22.3.3引入属性文件498
22.3.4数据源Bean的配置498
22.4会话工厂Bean的管理和配置499
22.4.1会话工厂依赖包499
22.4.2会话工厂Bean的配置499
22.4.3配置扫描Mapper文件的路径500
22.4.4配置实体类所在的包500
22.4.5指定MyBatis配置文件的位置501
22.5DAO Bean配置管理501
22.5.1单个Mapper DAO Bean501
22.5.2批量Mapper DAO Bean502
22.5.3获取DAO Bean504
22.6扫描全部Bean管理配置504
22.7事务管理Bean504
22.7.1事务管理依赖配置504
22.7.2事务管理Bean配置505
22.8AspectJ支持自动代理实现AOP功能505
22.9编写应用505
22.9.1编写服务类505
22.9.2编写测试类506
22.10Spring使用的注解507
第23章SSM整合511
23.1创建Maven项目SSMApp511
23.2引入依赖512
23.2.1引入Spring MVC依赖512
23.2.2设置打包插件512
23.3SSM中的Spring整合513
23.3.1启动Spring513
23.3.2Spring与Spring MVC框架的整合514
23.4编写控制器514
23.4.1编写StudentController514
23.4.2添加登录方法515
23.4.3添加登录判断方法515
23.4.4添加主页面映射515
23.4.5添加查看图书映射516
23.4.6添加退出方法516
23.5登录验证拦截器516
23.5.1拦截器定义516
23.5.2拦截器配置517
23.6在Eclipse中部署测试517
23.7用Maven打包518
23.7.1设置打包方式518
23.7.2设置编译时依赖518
23.7.3打包519
本篇参考文献520
第5篇Spring Boot
第24章Spring Boot入门52324.1Spring Boot概述523
24.1.1什么是Spring Boot523
24.1.2使用Spring Boot的好处523
24.2第一个Spring Boot程序524
24.2.1用Maven构建项目524
24.2.2设置mavenjarplugin版本525
24.2.3更新Maven项目526
24.2.4项目结构527
24.2.5引入父模块528
23.2.6引入Web模块528
23.2.7创建Controller类528
24.2.8创建主程序529
24.2.9启动主程序529
24.2.10总结530
24.2.11Spring Boot的核心特性530
24.3Spring Boot主程序分析530
24.3.1@SpringBootApplication注解531
24.3.2组件定义532
24.3.3组件配置532
24.3.4组件扫描533
24.3.5自定义组件扫描533
24.3.6生成容器启动扫描533
24.3.7从容器中获取Bean534
第25章Spring Boot自动装配536
25.1自动装配机制536
25.1.1SPI机制536
25.1.2JDBC中的SPI机制536
25.1.3Spring Boot中的类SPI扩展机制539
25.2自动配置包管理540
25.2.1引入机制540
25.2.2注册机制540
25.2.3注册逻辑541
25.3自动装配引入器541
25.3.1自动装配引入器配置541
25.3.2引入机制542
25.3.3执行机制542
25.4获得所有自动装配类的配置543
25.4.1自动装配类的配置543
25.4.2执行机制544
25.4.3自动装配类的获取544
25.5获得自动装配类的过滤条件546
25.5.1过滤条件配置546
25.5.2执行机制546
25.5.3过滤条件获取547
第26章有条件装配Bean548
26.1概述548
26.1.1Bean的配置方法548
26.1.2Bean的有条件注册548
26.2无条件创建Bean548
26.2.1创建Spring Boot项目549
26.2.2创建Bean549
26.2.3使用Bean550
26.3条件注解@Conditional551
26.3.1Condition接口与实现552
26.3.2设置环境变量552
26.3.3有条件注册Bean553
26.4简化条件注解554
26.4.1概述554
26.4.2属性条件注解555
26.5将条件注解到类上557
26.5.1类条件注解557
26.5.2示例558
26.6条件自动配置558
26.6.1条件自动配置简介558
26.6.2创建自动配置类559
26.6.3创建自动配置文件spring.factories559
26.6.4自动配置条件文件560
26.6.5条件成立测试560
26.6.6条件不成立测试561
第27章Spring Boot属性配置和使用562
27.1默认配置562
27.1.1在类中设置初始值562
27.1.2在自动配置类中设置初始值562
27.2配置文件563
27.2.1配置文件简介563
27.2.2yml格式配置文件563
27.2.3多环境配置文件565
27.2.4配置文件优先级565
27.3注入配置值566
27.4配置属性注解567
27.4.1定义属性配置类567
27.4.2配置Bean的使用567
27.5扫描配置Bean及@ConfigurationProperties569
27.5.1扫描入口569
27.5.2@ComponentScan+@Component569
27.5.3@Configuration+@Import570
27.5.4@Configuration+@Bean571
27.5.5@Configuration+@Bean+@import573
27.5.6@Configuration+@EnableConfigurationProperties575
27.5.7@EnableAutoConfiguration576
第28章自定义Spring Boot Starter578
28.1Spring Boot起步依赖概述578
28.1.1起步依赖机制578
28.1.2为什么要自定义起步依赖578
28.2创建第三方应用579
28.2.1建立Maven项目579
28.2.2建立Food类579
28.2.3编译、打包和安装580
28.3创建自动配置项目580
28.3.1建立foodspringbootstarterautoconfigure项目580
28.3.2添加springbootautoconfigure依赖581
28.3.3添加第三方依赖581
28.3.4建立属性配置类582
28.3.5建立工厂类582
28.3.6配置自动配置类583
28.3.7配置自动配置类启动条件583
28.3.8编译、打包和安装583
28.4创建启动项目584
28.4.1启动模块概述584
28.4.2建立foodspringbootstarter项目584
28.4.3添加Spring基本起步依赖585
28.4.4添加自动配置模块依赖585
28.4.5添加第三方应用依赖585
28.4.6编译、打包和安装586
28.5创建应用项目586
28.5.1建立foodApp项目586
28.5.2添加起步依赖模块587
28.5.3建立Person类587
28.5.4配置属性文件587
28.5.5建立启动类588
28.5.6测试运行588
28.5.7依赖启动关系588
第29章Spring Boot集成SSM589
29.1Spring Boot应用启动器589
29.2初始化工程591
29.2.1建立Spring Boot项目SpringBootSSM591
29.2.2多环境配置591
29.3集成Spring MVC和Tomcat592
29.3.1引入springbootstarterweb启动依赖592
29.3.2配置信息592
29.3.3配置信息详解593
29.3.4编写控制器类595
29.3.5扫描组件595
29.3.6测试Web应用595
29.4集成数据源596
29.4.1引入springbootstarterjdbc起步依赖596
29.4.2引入数据库驱动依赖596
29.4.3引入数据源依赖596
29.4.4配置属性597
29.4.5测试数据源597
29.5集成MyBatis598
29.5.1引入mybatisspringbootstarter起步依赖598
29.5.2配置映射文件属性599
29.5.3注解扫描Mapper接口类599
29.5.4创建学生类600
29.5.5创建学生映射文件601
29.5.6创建学生映射接口603
29.5.7测试MyBatis603
29.6支持JSP604
29.6.1外置容器对JSP的处理604
29.6.2引入依赖605
29.6.3内置容器对JSP的处理605
29.6.4配置属性606
29.6.5创建JSP文件目录606
29.6.6访问JSP文件607
29.6.7创建控制器607
29.6.8JSP页面热部署608
29.7Spring拦截器608
29.7.1定义Spring拦截器608
29.7.2注册Spring拦截器609
29.7.3测试610
29.8热部署610
29.8.1添加依赖610
29.8.2热部署启动测试611
29.9项目打包611
29.9.1打包插件611
29.9.2打包612
29.9.3运行612
29.10打包资源文件613
29.10.1配置资源文件613
29.10.2打包并运行614
29.11JSP项目打包war614
29.11.1打包为war格式614
29.11.2修改依赖615
29.11.3注册webapp资源目录615
29.11.4打包616
29.11.5独立运行616