美文网首页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