美文网首页
Spring 框架中的Spring FrameWork

Spring 框架中的Spring FrameWork

作者: 扶光_ | 来源:发表于2023-11-14 11:15 被阅读0次

    spring官网
    spring不仅只是一个技术,发展到现在sping有完整的家族体系,提供了若干个项目,每个项目可以完成特定的功能,称为spring全家桶
    90%以上的企业技术选型
    优势

    • 简化开发复杂性
      IOC
      AOP
      事务处理
    • 框架整合,高效整合其他技术
      Mybatis
      Mybatis-plus
      struts
      struts2
      hibernate

    一,Spring FrameWork

    是sping全家桶中最基础的项目,是其他项目的根基

    1.1 spring FrameWork系统架构

    系统架构

    1.2 IOC核心思想

    之前java代码写的项目耦合度偏高
    使用对象时,在程序中不主动使用new产生对象,转换为由外部提供对象 这就是IOC(控制反转)
    对象的创建控制权由内部代码转移到外部,这种思想交控制反转,目的就是解耦

    Spring把这个控制反转的思想做到了,进行了实现
    spring在内部提供了一个容器叫IOC容器,用来充当ioc思想中的“外部”
    ioc容器负责对象的创建初始化等,被创建的的对象再ioc容器里被称为bean
    DI依赖注入,两个bean中存在依赖关系,ioc容器直接帮你把他两绑好,这个过程叫作依赖注入

    总结:充分解耦
    1 使用ioc容器管理bean(IoC)
    2 在IoC容器内有依赖关系的bean进行绑定

    管理service和dao(Mapper)包

    二,Spring 的使用

    首先要导入第三方spring framework的包

    <!--    sping framwork-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.2.10.RELEASE</version>
        </dependency>
    
    image.png image.png
    • DI基本使用
    image.png 删除业务层创建的new对象

    配置server与dao关系


    配置关系

    2.1 bean的基础配置

    • 1 bean取别名
      在bean标签中可以使用name属性来进行别名设置。

    • scope定义bean作用范围
      默认单例 (所有对象用这一个实例并且,这个唯一的Bean实例会被储存到缓存当中)
      prototype 非单例(会每次都重新生成一个新的对象实例给请求方)
      控制我们bean创建的数量的

    spring报错从最后一行看 ,依次往上解决

    2.2 构造方法实例化bean

    <bean id="brandDao" class="实现类路径"/>
    bean本质上就是对象,创建bean使用构造方法完成
    spring在给我们创建bean的时候调用的是无参的构造方法

    2.3 静态工厂bean实例化

    <bean id="orderDao" class="factory.orderFactory" factory-method="调用工厂的那个方法来进行创建"/>

    2.4 实例工厂初始化bean

    <bean id="UserFactory" class="factory.userDaoFactory" />
    <bean id="userDao" factory-bean="UserFactory" factory-method="getUserDao" />

    2.5FactoryBean 使用最多方法创建

    image.png

    2.6 Bean的生命周期

    bean从创建到销毁的整体过程


    经历的阶段

    三,Bean依赖注入方式

    • 1 setter注入
      简单类型


      image.png

    引用类型

    • 2 构造器注入
      简单类型
      引用类型


      image.png
    • 3 依赖自动装配
      只能用于引用类型依赖注入
      容器根据bean所依赖的资源自动查找并注入到bean中的过程称为自动装配

    • 根据类型装配(主要用这个)
      <bean id="bookservice" class="com.it.impl" autowire="byType"/>

    • 根据名称装配
      <bean id="bookservice" class="com.it.impl" autowire="byName"/>

    • 4 集合注入
      数组 list set map properties


      注入

    四,容器

    创建容器(两种)
    ClassPathXmlApplicationContext
    FileSystemXmlApplicationContext
    获取bean(三种)
    BookDao bd = (BookDao)ctx.getBean("bd")
    BookDao bd = ctx.getBean("bd",BookDao.class)
    BookDao bd = ctx.getBean(BookDao.class)

    五,注解开发

    简化代码

    5.1注解开发定义bean

    注解开发定义bean image.png

    5.2 纯注解开发

    image.png image.png

    5.3 bean的管理

    image.png

    六,AOP

    面向切面编程,就是一种编程思想,在不惊动原始设计的基础上为其进行功能加强

    • 连接点 程序执行中的任意位置,
    • 切入点:匹配连接点的式子


      切入点
    • 通知:在切入点执行的操作,共性功能
    • 通知类:定义通知的类
    • 切面:通知与切入点的关系

    AOP通知类型

    aop通知抽取了共性的功能,根据功能位置不同,最终运行代码要加到合理的位置上

    • 前置通知

    • 后置通知

    • 环绕通知


      环绕通知
    • 返回后通知

    • 抛出异常后通知

    Aop获取数据

    • 获取原始参数
      joinpoint:所有通知类型都可以
      proceedJoinPoint:环绕通知
    • 获取原始返回值
      返回后通知
      环绕通知
    • 获取原始异常
      抛出异常后通知
      环绕通知

    用例,比如在百度网盘分享链接和提取码时,当用户点开链接输入密码时多输入的空格进行处理,可以用环绕通知拿到参数进行处理trim()

    七,事务

    列如,银行转账
    保证一系列的数据库操作同成功同失败
    在接口中打一个注解@transitonal

    image.png

    spring事务属性
    @transitonal(timeout=-1)


    image.png

    处理事务 要求有些操作不加入事务中去
    @transitonal(propagation=propagation.REQUIRE_NEW)

    image.png

    相关文章

      网友评论

          本文标题:Spring 框架中的Spring FrameWork

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