《Spring+Spring MVC+MyBatis从零开始学》-- 读书笔记

控制反转(IoC)与依赖注入(DI)

IoC:即把创建对象交给了 IoC 容器处理,控制权颠倒过来了,这就是所谓的控制反转。

DI 是 Dependency Inject 的缩写,译为“依赖注入”。所谓依赖注入,就是由 IoC 容器在运行期间动态地将某种依赖关系注入对象之中。

依赖注入(DI)和控制反转(IoC)是对同一件事情的不同描述。

IoC/DI 通常有 setter(设置)注入和构造方法注入两种实现方式。

Spring 框架

Spring 框架的主要功能是通过其核心容器来实现的。Spring 框架提供的两种核心容器分别是:

  • BeanFactory

  • ApplicationContext。

Spring框架的两个最基本和最重要的包是:

  • org.springframework.beans.factory(该包中的主要接口是 BeanFactory)

  • org.springframework.context(该包中的主要接口是 ApplicationFactory)。

Spring IoC 框架

Spring IoC 框架的主要组件有:

  • Beans、

  • 配置文件 applicationContext.xml、

  • BeanFactory 接口及其相关类、

  • ApplicationContext 接口及其相关类。

Beans 就是一个常见的 JavaBean、Java 类。

Bean 的作用域

singleton 是 Spring 容器默认的作用域,当 Bean 的作用域为 singleton 时,Spring 容器就只会存在一个共享的 Bean 实例,并且所有对 Bean 的请求,只要 id 与该 Bean 的 id 属性相匹配,就会返回同一个 Bean 的实例。

对需要保持会话状态的 Bean 应用使用 prototype 作用域。在使用 prototype 作用域时,Spring 容器会为每个对该 Bean 的请求都创建一个新的实例。

Spring AOP 简介

AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程。

目前流行的 AOP 框架有两个,分别为 Spring AOP 和 AspectJ。Spring AOP 使用纯 Java 实现,不需要专门的编译过程和类加载器,在运行期间通过代理方式向目标类植入增强的代码。

AspectJ 是一个基于 Java 语言的 AOP 框架,从 Spring 2.0 开始,Spring AOP 引入了对 AspectJ 的支持。

声明式事务管理

在需要使用事务的 Spring Bean 类或者 Bean 类的方法上添加注解@Transactional。如果将注解添加在 Bean 类上,就表示事务的设置对整个 Bean 类的所有方法都起作用;如果将注解添加在 Bean 类中的某个方法上,就表示事务的设置只对该方法有效。

MyBatis 概述

与 Hibernate 相比,虽然使用 MyBatis 手动编写 SQL 要比使用 Hibernate 的工作量大,但 MyBatis 可以配置动态 SQL 并优化 SQL,可以通过配置决定 SQL 的映射规则,它还支持存储过程等。

MyBatis 映射文件中常用标签和属性

标签

标签名 作用
select 查询操作
insert 添加操作
update 更新操作
delete 删除操作
sql 定义可重用的 SQL 代码片段,然后在其他语句中引用这一代码片段。
include 它的 refid 属性引用了自定义的代码片段,refid 属性值为自定义代码片段的 id。
resultMap 表示结果映射集,主要作用是定义映射规则、级联更新以及定义类型转化器等。
foreach 一种用于数组和集合循环遍历的方式

foreach 标签

MyBatis 中已经提供了一种用于数组和集合循环遍历的方式,那就是使用 foreach 元素。

关于 foreach 元素中使用的几种属性的描述具体如下: 

  • item:配置的是循环中当前的元素。 

  • index:配置的是当前元素在集合中的位置下标。 

  • collection:配置的 list 是传递过来的参数类型(首字母小写),可以是一个 array、list(或collection)、Map 集合的键、POJO 包装类中的数组或集合类型的属性名等。 

  • open 和 close:配置的是以什么符号将这些集合元素包装起来。 

  • separator:配置的是各个元素的间隔符。

MyBatis 中的关联关系

在关系型数据库中,多表之间存在3种关联关系,分别为一对一、一对多和多对多。

resultMap 元素中包含一个 association 子元素,MyBatis 就是通过该元素来处理一对一关联关系的。

在 association 元素中,通常可以配置以下属性。 

  • property:指定映射到的实体类对象属性,与表字段一一对应。 

  • column:指定表中对应的字段。 

  • javaType:指定映射到实体对象属性的类型。 

  • select:指定引入嵌套查询的子 SQL 语句,用于关联映射中的嵌套查询。 

  • fetchType:指定在关联查询时是否启用延迟加载,有 lazy 和 eager 两个属性值,默认值为 lazy(默认关联映射延迟加载)。

resultMap 元素中包含一个 collection 子元素,MyBatis 就是通过该元素来处理一对多关联关系的。collection 子元素的属性大部分与 collection 元素相同,但其还包含一个特殊属性 ofType。ofType 属性与 javaType 属性对应,用于指定实体对象中集合类属性所包含的元素类型。

在 resultMap 元素中使用了 collection 元素来映射多对多的关联关系。

Spring MVC概述

Spring MVC 是 Spring 提供的一个轻量级 Web 框架,它实现了 Web MVC 设计模式。

POJO 类型

即简单的 Java 对象(Plain Ordinary Java Objects)实际就是普通 JavaBean。

JSON 数据交互

使用注解式开发时,需要用到两个重要的 JSON 格式转换注解 @RequestBody 和 @ResponseBody。

拦截器概述

Spring MVC 中的拦截器(Interceptor)类似于 Servlet 中的过滤器(Filter),它主要用于拦截用户请求并做相应的处理。

每天学习一点点,每天进步一点点。

原文地址:https://www.cnblogs.com/youcoding/p/14697442.html