编辑推荐
《Spring实战(第4版)》:全面介绍Spring 5,涵盖反应式应用开发。
内容简介
本书从介绍Spring框架入手,介绍了Beans的配置、依赖注入、定制Bean、基于Java的容器、AOP、Spring Data、Spring MVC等知识。最新的第4版反映了Spring 5的变化,并新增了关于功能和开发反应式应用程序的内容,其中反应式应用程序开发章节涵盖反应流规范、RxJava 2、反应器、Spring WebFlux和反应支持等内容。
章节目录
版权信息
版权
版权声明
内容提要
前言
资源与支持
第1章 Spring框架概述
1.1 简介
1.2 Spring框架的模块
1.3 Spring IoC容器
1.4 使用Spring框架的好处
1.4.1 管理本地和全局事务的一致方法
1.4.2 声明式事务管理
1.4.3 安全
1.4.4 Java管理扩展
1.4.5 Java消息服务
1.4.6 缓存
1.5 一个简单的Spring应用程序
1.5.1 确定应用程序对象及其依赖关系
1.5.2 根据确定的应用程序对象创建POJO类
1.5.3 创建配置元数据
1.5.4 通过setter方法注入依赖项
1.5.5 创建Spring容器的一个实例
1.5.6 从Spring容器访问bean
1.6 Spring框架5的新功能
1.7 建立在Spring之上的框架
1.8 小结
第2章 Spring框架基础
2.1 简介
2.2 面向接口编程的设计方法
提高依赖类的可测试性
Spring对“面向接口编程”设计方法的支持
使用“面向接口编程”设计方法的MyBank应用程序
2.3 使用静态和实例工厂方法创建Spring bean
2.3.1 通过静态工厂方法实例化bean
2.3.2 通过实例工厂方法实例化bean
注入由工厂方法创建的bean的依赖项
2.4 基于构造函数的DI
2.4.1 回顾基于setter的DI
2.4.2 基于构造函数的DI
基于构造函数和基于setter的DI机制的结合使用
2.5 将配置详细信息传递给bean
2.6 bean的作用域
2.6.1 singleton
1.singleton范围的bean和多个Spring容器
2.延迟初始化一个singleton范围的bean
2.6.2 prototype
2.6.3 为你的bean选择适当的范围
2.7 小结
第3章 bean的配置
3.1 简介
3.2 bean定义的继承
3.2.1 MyBank——bean定义继承示例
3.2.2 继承了什么
bean定义继承示例——父bean定义非抽象
bean定义继承示例——继承工厂方法配置
3.3 构造函数参数匹配
3.3.1 使用
3.3.2 基于类型的构造方法参数匹配
1.构造函数参数表示不同的Spring bean
2.构造函数参数表示相关的Spring bean
3.构造函数参数表示标准Java类型和自定义类型
3.3.3 基于名称的构造函数参数匹配
1.@ConstructorProperties注解和bean定义继承
2.@ConstructorProperties注解和工厂方法
3.在Eclipse IDE中启用(或禁用)调试或“参数名称发现”标志
3.4 配置不同类型的bean属性和构造函数参数
3.4.1 Spring的内置属性编辑器
3.4.2 指定不同集合类型的值
1.将List、Map、Set和Properties类型的元素添加到集合类型
2.将bean引用添加到集合类型
3.将bean名称添加到集合类型
4.将null值添加到集合类型
3.4.3 指定数组的值
3.4.4 与、
3.5 内置属性编辑器
3.5.1 CustomCollectionEditor
3.5.2 CustomMapEditor
3.5.3 CustomDateEditor
3.6 向Spring容器注册属性编辑器
3.6.1 创建一个PropertyEditorRegistrar实现
3.6.2 配置CustomEditorConfigurer类
3.7 具有p和c命名空间的简明bean定义
3.7.1 p命名空间
3.7.2 c命名空间
3.8 Spring的util模式
3.8.1 元素
3.8.2
3.8.3
3.8.4
3.8.5
3.8.6
3.9 FactoryBean接口
3.9.1 MyBank application——将事件存储在数据库中
3.9.2 MyBank——FactoryBean 示例
3.9.3 访问FactoryBean实例
3.10 模块化bean配置
3.11 小结
第4章 依赖注入
4.1 简介
4.2 内部bean
4.3 使用depends-on特性控制bean的初始化顺序
4.3.1 MyBank——bean之间隐式的依赖关系
4.3.2 隐性依赖问题
1.EventSenderSelectorServiceImpl——写入者
2.appConfig.properties
3.FixedDepositServiceImpl——读取者
4.如何解决隐含依赖问题
5.多个隐式依赖项
6.depends-on特性和bean定义继承
4.4 singleton和prototype范围的bean的依赖项
4.4.1 singleton bean的依赖项
4.4.2 Prototype bean的依赖项
4.5 通过singleton bean中获取prototype bean的新实例
4.5.1 ApplicationContextAware 接口
4.5.2
4.5.3
唯一地标识bean方法
4.6 自动装配依赖项
4.6.1 byType
4.6.2 constructor
4.6.3 byName
4.6.4 default / no
4.6.5 使bean无法用于自动装配
4.6.6 自动装配的局限性
4.7 小结
第5章 自定义bean和bean定义
5.1 简介
5.2 自定义bean的初始化和销毁逻辑
5.2.1 使Spring调用由destroy-method特性指定的cleanup方法
5.2.2 清理方法和prototype bean
5.2.3 为所有bean指定默认的bean初始化和销毁方法
5.2.4 InitializingBean 和DisposableBean 生命周期接口
5.2.5 JSR 250’s @PostConstruct 和@PreDestroy 注解
5.3 使用BeanPostProcessor与新创建的bean实例进行交互
5.3.1 BeanPostProcessor示例——验证bean实例
5.3.2 BeanPostProcessor示例——解析bean依赖项
5.3.3 FactoryBeans的BeanPostProcessor行为
5.3.4 RequiredAnnotationBeanPostProcessor
5.3.5 DestructionAwareBeanPostProcessor
5.4 使用BeanFactoryPostProcessor修改bean定义
5.4.1 BeanFactoryPostProcessor示例
5.4.2 PropertySourcesPlaceholderConfigurer
1.localOverride属性
2.
5.4.3 PropertyOverrideConfigurer
PropertyOverrideConfigurer示例
5.5 小结
第6章 使用Spring进行注解驱动开发
6.1 简介
6.2 用@Component标识Spring bean
6.3 @Autowired 通过类型自动装配依赖项
6.4 @Qualifier 按名称自动装配依赖项
6.4.1 使用qualifiers自动装配bean
6.4.2 创建自定义限定符注解
6.5 JSR 330的@Inject和@Named 注解
Java 8的Optional类型
6.6 JSR 250的 @Resource注解
6.7 @Scope、@Lazy、@DependsOn和@Primary注解
6.7.1 @Scope
6.7.2 @Lazy
延迟自动装配依赖项
6.7.3 @DependsOn
6.7.4 @Primary
6.8 使用@Value简化注解的bean类的配置
6.8.1 在@Value注解中使用Spring表达式语言(SpEL)
6.8.2 在方法级和方法参数级使用@Value注解
6.8.3 在SpEL中使用数学、关系和逻辑运算符
6.8.4 使用SpEL获取bean的引用
6.8.5 在SpEL中使用正则表达式
6.8.6 在SpEL中使用映射和列表
6.8.7 在基于XML的bean定义中指定SpEL表达式
6.9 使用Spring的Validator接口验证对象
6.10 使用JSR 380(Bean Validation 2.0)注解指定约束
6.10.1 Spring中的JSR 380支持
验证方法
6.10.2 JSR 380有什么新功能
6.11 bean定义配置文件
bean定义配置文件示例
1.开发和生产环境中的不同数据库
2.支持Hibernate和MyBatis
3.设置活跃配置文件
6.12 小结
第7章 基于Java的容器配置
7.1 简介
7.2 使用@Configuration和@Bean注解配置bean
在@Component和JSR 330的@Named类中定义@Bean方法
使用@ComponentScan搜索和注册bean
使用组件索引代替类路径扫描
7.3 注入bean依赖项
7.4 配置Spring容器
7.5 生命周期回调
7.6 导入基于Java的配置
解决依赖关系
7.7 附加主题
7.7.1 覆盖@Bean方法
7.7.2 配置BeanPostProcessors和BeanFactoryPostProcessors
7.7.3 导入应用程序上下文XML文件
7.7.4 有条件地包含@Bean和 @Configuration类
1.开发和生产环境中的不同数据库
2.对Hibernate和MyBatis的支持
7.8 小结
第8章 使用Spring进行数据库交互
8.1 简介
8.2 MyBank应用程序的需求
8.3 使用Spring JDBC模块开发MyBank应用程序
8.3.1 配置数据源
在Java EE环境中配置数据源
8.3.2 创建使用Spring的JDBC模块类的DAO
1.JdbcTemplate
2.NamedParameterJdbcTemplate
3.SimpleJdbcInsert
4.BankApp类
8.4 使用Hibernate开发MyBank应用程序
8.4.1 配置SessionFactory 实例
8.4.2 创建使用Hibernate API进行数据库交互的DAO
8.5 使用Spring的事务管理
8.5.1 MyBank的事务管理需求
8.5.2 编程式事务管理
8.5.3 声明式事务管理
8.5.4 Spring对JTA的支持
使用
8.6 使用基于Java的配置开发MyBank应用程序
8.6.1 配置javax.sql.DataSource
8.6.2 配置Hibernate的SessionFactory
8.6.3 启用@Transactional支持
8.7 小结
第9章 Spring Data
9.1 简介
9.2 核心概念和接口
9.3 Spring Data JPA
9.3.1 代替存储库方法的自定义实现
9.3.2 将自定义方法添加到存储库
9.3.3 配置Spring Data JPA——基于Java的配置方法
9.3.4 配置Spring Data JPA——基于XML的配置方法
1.启用Spring Data JPA
2.配置LocalContainerEntityManagerFactoryBean
3.配置PlatformTransactionManager
9.3.5 查询方法
1.限制结果数量
2.排序结果
3.基于多个特性的查询
4.为查询添加分页
5.为查询添加排序
6.对大型结果集进行分页
7.流式查询结果
8.异步执行查询方法
9.使用@Query注解显式指定查询
9.4 使用Querydsl创建查询
9.4.1 将Spring Data与Querydsl集成
9.4.2 构造Predicate
9.5 按示例查询
9.6 Spring Data MongoDB
9.6.1 建模域实体
9.6.2 配置Spring Data MongoDB——基于Java的配置
9.6.3 配置Spring Data MongoDB——基于XML的配置
9.6.4 创建自定义存储库
9.6.5 将自定义方法添加到存储库
9.6.6 使用Querydsl创建查询
9.6.7 使用Query by Example创建查询
9.7 小结
第10章 使用Spring进行消息传递、电子邮件发送、异步方法执行和缓存
10.1 简介
10.2 MyBank应用程序的需求
10.3 发送JMS消息
10.3.1 配置ActiveMQ代理以在内嵌模式下运行
10.3.2 配置一个JMS ConnectionFactory
10.3.3 使用JmsTemplate发送JMS消息
10.3.4 在事务中发送JMS消息
10.3.5 动态JMS目标和JmsTemplate配置
10.3.6 JmsTemplate和消息转换
10.4 接收JMS消息
10.4.1 使用JmsTemplate同步接收JMS消息
10.4.2 使用消息侦听器容器异步接收JMS消息
10.4.3 使用@JmsListener注册JMS侦听器端点
10.4.4 使用spring-messaging模块的消息传递
10.5 发送电子邮件
10.5.1 使用MimeMessageHelper准备MIME消息
10.5.2 使用MimeMessagePreparator准备MIME消息
10.6 任务调度和异步执行
10.6.1 TaskExecutor 接口
10.6.2 TaskScheduler 接口
10.6.3 调度bean方法的执行
10.6.4 @Async和@Scheduled注解
1.@Async注解
2.@Scheduled注解
10.7 缓存
10.7.1 配置一个CacheManager
10.7.2 缓存注解——@Cacheable、@CacheEvict和@CachePut
1.@Cacheable
2.@CacheEvict
3.@CachePut
10.7.3 使用Spring cache模式进行缓存配置
10.8 运行MyBank应用程序
10.9 小结
第11章 面向切面编程
11.1 简介
11.2 一个简单的AOP示例
11.3 Spring AOP框架
11.3.1 代理的创建
11.3.2 expose-proxy特性
11.4 切入点表达式
11.4.1 @Pointcut注解
11.4.2 execution 和args 切入点指示符
将目标方法的参数传递给一个通知
11.4.3 bean切入点指示器
11.4.4 基于注解的切入点指示符
11.5 通知类型
11.5.1 前置通知
11.5.2 返回后通知
11.5.3 抛出后通知
11.5.4 后置通知
11.5.5 围绕通知
11.5.6 通过实现特殊接口创建通知
11.6 Spring AOP - XML模式样式
11.6.1 配置一个AOP切面
11.6.2 配置一个通知
1.配置一个返回后通知
2.配置一个抛出后通知
11.6.3 将切入点表达式与通知相关联
11.7 小结
第12章 Spring Web MVC基础知识
12.1 简介
12.2 示例Web项目的目录结构
12.3 了解“Hello World”网络应用程序
12.3.1 HelloWorldController.java——Hello World Web应用程序的控制器类
12.3.2 helloworld.jsp——展示“Hello World !!”消息的JSP页面
12.3.3 myapp-config.xml——Web应用程序上下文XML文件
12.3.4 web.xml——Web应用程序部署描述符
12.4 DispatcherServlet——前端控制器
访问ServletContext和ServletConfig对象
12.5 使用@Controller和@RequestMapping注解开发控制器
使用注解控制器开发“Hello World”Web应用程序
12.6 MyBank Web应用程序的需求
12.7 Spring Web MVC注解——@RequestMapping和 @RequestParam
12.7.1 使用 @RequestMapping将请求映射到控制器或者控制器方法
1. @RequestMapping注解和RequestMappingHandlerMapping
2.基于请求路径映射请求
3. 基于HTTP方法映射请求
4.基于请求的参数映射请求
5.基于请求的MIME类型映射请求
6.根据响应可接受的MIME类型映射请求
7.基于请求头的值映射请求
12.7.2 @RequestMapping 注解方法的参数
12.7.3 @RequestMapping 注解方法的返回类型
12.7.4 使用@RequestParam将请求参数传递给控制器方法
1.将所有的请求参数传递给控制器方法
2.使用name属性指定请求参数的名称
3.使用name特性指定请求参数的名称
4.通过使用required特性来指定请求参数是可选的还是必需的
5.使用defaultValue特性指定请求参数的默认值
12.8 验证
12.9 使用@ExceptionHandler注解处理异常
12.10 加载根Web应用程序上下文XML文件
12.11 小结
第13章 Spring Web MVC中的验证和数据绑定
13.1 简介
13.2 使用@ModelAttribute注解添加和获取模型特性
13.2.1 使用方法级的@ModelAttribute注解添加模型特性
13.2.2 使用@ModelAttribute注解获取模型特性
13.2.3 请求处理及@ModelAttribute注解的方法
13.2.4 使用@ModelAttribute注解的方法参数的行为
13.2.5 RequestToViewNameTranslator对象
13.3 使用@SessionAttributes注解缓存模型特性
13.4 Spring中对数据绑定的支持
13.4.1 WebDataBinder——Web请求参数的数据绑定器
13.4.2 配置WebDataBinder实例
1.在控制器类中定义一个@InitBinder 注解的方法
2.配置一个WebBindingInitializer实现
3.在@ControllerAdvice注解的类中定义@InitBinder方法
13.4.3 允许或禁止字段参与数据绑定过程
13.4.4 使用BindingResult对象检查数据绑定和验证错误
13.5 Spring中的验证支持
13.5.1 使用Spring的Validator接口验证模型特性
1.通过显式调用validate方法验证模型特性
2.使用JSR 380的@Valid注解调用模型特性验证
13.5.2 使用JSR 380注解指定约束
13.5.3 使用JSR 380注解验证对象
1.通过显式地调用validate方法验证模型特性
2.使用JSR 380的@Valid注解调用模型特性验证
13.6 Spring的form标签库
Spring的form标签库对HTML5的支持
13.7 使用基于Java的配置方式来配置Web应用程序
13.8 小结
第14章 使用Spring Web MVC开发RESTful Web服务
14.1 简介
14.2 定期存款Web服务
14.3 使用Spring Web MVC实现RESTful Web服务
14.3.1 JSON (JavaScript对象表示法)
14.3.2 FixedDepositWS Web服务的实现
1.使用ResponseEntity指定HTTP响应
2.使用HttpServletResponse指定HTTP响应
3.使用@ResponseBody将方法的值返回给HTTP响应体
4.使用@RequestBody将HTTP请求体绑定到方法参数
5.使用@ResponseStatus设置HTTP响应状态
6.使用@ExceptionHandler处理异常
14.4 使用RestTemplate和WebClient访问RESTful Web服务
14.4.1 RestTemplate 的配置
14.4.2 使用RestTemplate访问FixedDepositWS Web服务
14.4.3 使用WebClient异步访问RESTful Web服务
14.5 使用HttpMessageConverter将Java对象与HTTP请求和响应相互转换
14.6 @PathVariable和@MatrixVariable 注解
14.7 小结
第15章 Spring Web MVC进阶——国际化、文件上传和异步请求处理
15.1 简介
15.2 使用处理程序拦截器对请求进行预处理和后处理
实现和配置处理程序拦截器
15.3 使用资源束进行国际化
15.3.1 MyBank Web应用程序的需求
15.3.2 MyBank Web应用程序的国际化和本地化
15.4 异步地处理请求
15.4.1 异步请求处理配置
15.4.2 从@RequestMapping方法返回Callable
15.4.3 从@RequestMapping方法中返回DefferedResult
1.@RequestMapping方法实现
2.计算DeferredResult实例的结果
3.异常处理
15.4.4 设置默认超时时间
15.4.5 拦截异步请求
15.5 Spring中的类型转换和格式化支持
15.5.1 创建自定义转换器
15.5.2 配置和使用自定义转换器
15.5.3 创建一个自定义的格式化器
15.5.4 配置一个自定义格式化器
15.5.5 创建AnnotationFormatterFactory以格式化仅使用@AmountFormat注解的字段
15.5.6 配置AnnotationFormatterFactory 的实现
15.6 Spring Web MVC中的文件上传支持
15.6.1 使用CommonsMultipartResolver上传文件
15.6.2 使用StandardServletMultipartResolver上传文件
15.7 小结
第16章 使用Spring Security保护应用程序
16.1 简介
16.2 MyBank Web应用程序的安全性需求
16.3 使用Spring Security保护MyBank Web应用程序
16.3.1 Web请求安全的配置
1.DelegatingFilterProxy过滤器的配置
2.配置Web请求安全
16.3.2 身份认证配置
16.3.3 使用Spring Security的JSP标签库保护JSP内容
16.3.4 保护方法
1.使用
2.使用@Secured注解指定bean方法的安全性约束
16.4 MyBank Web应用程序——使用Spring Security的ACL模块保护FixedDepositDet
Spring学习指南(第4版)是2019年由人民邮电出版社出版,作者 (印) J.夏尔马 (J. Sharma) 。
得书感谢您对《Spring学习指南(第4版)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。