美文网首页java我爱编程
spring学习笔记(多图)

spring学习笔记(多图)

作者: n油炸小朋友 | 来源:发表于2018-05-28 02:16 被阅读8次

核心

IOC

控制反转:把对象的创建交给spring的配置来实现

AOP

面向切面:扩展功能而不是修改源代码


ioc的两种实现

第一种:配置文件方式实现ioc

ioc的底层原理是:

  • xml配置文件
  • dom4j解析xml文件
  • 工厂设计模式
  • 反射
对象创建

下图展示了三种创建方式的实现:分别是调用需创建的类的无参构造函数、调用工厂类的静态方法、调用工厂类的非静态方法:

image.png
属性的注入
  • 有参构造函数

  • set方法注入


    image.png
  • 注入属性一般常用于注入对象属性,如在service里面把dao作为类属性注入

实现方法:

  1. 在service声明dao属性
  2. 生成dao属性的set方法
  3. 在配置文件中注入关系
    (要先有dao的对象生成,然后才能注入)
image.png
  • 注入复杂类型的属性

在类里面声明这些类型的属性


image.png
  1. 数组


    image.png
  2. list集合


    image.png
  3. map映射


    image.png
  4. properties配置 java.util.Properties
image.png
第二种:注解方式实现IOC

注解可以使用在类、方法、属性上面

  1. 导入jar包


    image.png
  2. 创建类和方法
  3. 创建spring配置文件,引入约束
  4. 开启注解扫描
image.png image.png
  1. 使用注解


    image.png

spring常用注解

  • @Component
  • @Controller :web层
  • @Repository :持久层
  • @Service :业务层
    下面三个注解是Component的衍生注解,目前功能是一样的,后续版本会增强

若要创建多实例的,加上scope的注解(默认是单例)

image.png
这些注解目前是一样的作用 image.png image.png

注解注入属性的方式一:使用注解Autoweired


image.png

常用方式 是 注解和配置混合使用
创建对象用配置文件
注入对象属性使用注解方式

image.png

这里的属性注入用Resource注解,是第二种注入属性的注入方式


image.png

log4j

log4j

解决每次都要加载xml配置的问题

image.png image.png

上面那张图是默认去加载spring的位置和默认加载的xml名字,而我们没有在默认位置下创建xml,所以需要另外配置加载的路径。


AOP

aop概念
  • 面向切面编程,扩展功能不需要修改源代码
  • aop采用横向抽取机制,取代纵向继承体系重复性代码
名词解释
  • 连接点:类里面哪些方法可以被增强,这些方法叫做连接点
  • 通知/增强:增强的逻辑,称为增强,比如上面扩展的日志功能,这个日志功能叫做增强
    前置通知:在方法之前执行
    后置通知:在方法之后执行
    异常通知:方法出现异常
    最终通知:在后置之后执行
    环绕通知:在方法之后和之前执行


    image.png
  • 切面:把增强应用在具体方法上面,过程叫做切面(增强用到切入点的过程)
  • 切入点:实际被增强的方法
    使用表达式配置切入点
image.png
横向抽取机制理解

采用纵向机制解决功能扩展时,需要调用父类的方法:


image.png

横向抽取机制:

  1. 有接口的情况,使用jdk动态代理


    image.png
  2. 没有接口的情况,使用cglib动态代理


    image.png

spring实现aop

  1. 在spring里面实现aop,使用aspectj实现
    (1)aspectj不是spring的一部分
    (2)spring2.0以后才增加了对aspectj的支持
  2. 使用aspectj有两种方式
    (1)xml配置
    (2)注解方式
第一种:xml配置方式实现aop
  • 准备操作
    除了导入基本的jar包之外,还需要导入aop相关的jar包
image.png
  • 在xml中要导入aop的约束


    image.png
  • 增加相关的类 ,mybook是实现扩展功能的类,book是需要扩展功能的类


    image.png
image.png
  • xml配置
    先创建book和mybook类的对象
    然后配置切入点、切面和增强类型(before是mybook类中的方法)


    image.png

环绕增强方式的实现:

要加入proceedingJoinPoint.proceed();

image.png image.png image.png
第二种:使用注解实现aop
  • 在xml里面创建对象


    image.png
  • 在xml里面开启aop操作


    image.png
  • 在增强类上面使用注解完成aop操作
    类及方法上注解


    image.png

jdbcTemplate

  1. spring是一站式框架
    (1)针对javaee三层,每一层都有解决技术
    (2)针对到层,使用jdbcTemplate
  2. spring对不同的持久化技术都进行了封装
image.png
  1. jdbcTemplate对数据库进行crud操作
实现
  • 导入相关jar包


    image.png
  • 创建对象,设置数据库信息
  • 创建jdbcTemplate对象,设置数据源
  • 调用jdbcTemplate对象里面的方法实现操作

增加:

使用的是update方法


image.png

注意导入的包是这里面的


image.png

更新:
使用的是update方法

image.png

删除:
使用的是update方法

image.png

查询:
有不同需要的查询,分别是查询返回一个值,查询返回一个对象,查询返回一个集合

  • 查询返回一个值
    这里是返回个数
    使用queryForObject方法


    image.png
  • 查询返回一个对象
    使用queryForObject方法
    第一个参数是sql语句
    第二个参数是RowMapper接口,具体实现类需要我们自己写
    第三个是可变参数

image.png image.png
  • 查询返回一个集合
    使用query方法,返回的是list集合
    第一个参数是sql语句
    第二个参数是RowMapper接口,具体实现类需要我们自己写(这个方法用上面的返回对象的查询操作的)
    第三个是可变参数

xml配置数据库连接池

  • 导入jar包


    image.png
  • xml配置数据库连接池
    原来代码中是这样写的


    image.png

    现在使用xml代替


    image.png
  • 用xml创建jdbjTemplate对象
image.png
  • 使用jdbcTemplate对象,是在dao层使用,我们用xml配置方式注入属性来实现


    image.png

事务管理

事务的知识点请查看:https://www.jianshu.com/p/38620844538a

事务管理方式有两种

  1. 编程式事务管理(一般不用)
  2. 声明式事务管理
    (1)基于xml配置方式实现
    (2)基于注解实现
spring事务管理api

spring实现事务管理的api是PlatFormTransacionManager接口,并且为不同的dao层框架提供了具体的实现类

image.png
声明式事务管理的实现
第一种: xml配置方式实现
  • 配置事务管理器(dataSource是上面图的数据库连接池的xml配置)
  • 配置事务增强(method name=account*表示account开头的方法都被匹配 propagation为隔离级别)
image.png
  • 配置切面


    image.png
第二种: 注解方式实现
  • 配置事务管理器
  • 开启事务注解


    image.png
  • 在类上使用注解


    image.png

相关文章

网友评论

    本文标题:spring学习笔记(多图)

    本文链接:https://www.haomeiwen.com/subject/vbzrjftx.html