当前位置 : 主页 > 编程语言 > java >

Spring-全面详解(学习总结)

来源:互联网 收集:自由互联 发布时间:2021-08-21
目录 一、Spring介绍 简介 特点、主要特点 为什么要学? 二、IOC(依赖注入) Spring 容器IOC 和 bean介绍 控制反转: 容器概述: bean介绍 AOP 总结 一、Spring介绍 简介 Spring 框架为现代基于
目录
  • 一、Spring介绍
    • 简介
    • 特点、主要特点
    • 为什么要学?
  • 二、IOC(依赖注入)
    • Spring 容器IOC 和 bean介绍
    • 控制反转:
    • 容器概述:
    • bean介绍
    • AOP
  • 总结

    一、Spring介绍

    简介

    Spring 框架为现代基于 java 的企业应用程序提供了一个全面的编程和配置模型——在任何类型的部署平台上

    特点、主要特点

    1、非侵入式

    2、容器

    3、IoC

    4、AOP

    5、方便程序的测试

    为什么要学?

    主流市场推荐、学习的人数多、Spring社区活跃、工作需要、属于开源框架、方便web开发、集成度高。

    还因为Spring具有 以下优点:

    • 轻量级:相较于EJB容器,Spring采用的IoC容器非常的轻量级,基础版本的Spring框架大约只有2MB。Spring可以让开发者们仅仅使用POJO(Plain Old Java Object,相对于EJB)就能够开发出企业级的应用。这样做的好处是,你不需要使用臃肿庞大的 EJB容器(应用服务器),你只需要轻量的servlet容器(如Tomcat)。尤其在一些开发当中,很稀缺内存和CPU资源时,采用Spring比EJB无论是开发还是部署应用都更节约资源。
    • 控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
    • 面向切面编程(AOP): Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。
    • MVC框架:Spring MVC是一个非常好的MVC框架,可以替换其他web框架诸如Struts。
    • 集成性:Spring非常容易和其他的流行框架一起集成开发,这些框架包括:ORM框架,logging框架,JEE, Quartz,以及Struts等表现层框架。
    • 事务管理:Spring强大的事务管理功能,能够处理本地事务(一个数据库)或是全局事务(多个数据,采用JTA)。
    • 模块分离:Spring框架是由模块构成的。虽然已经有太多的包和类了,但它们都按照模块分好类了,你只需要考虑你会用到的模块,而不用理其他的模块。
    • 异常处理:由于Java的JDBC,Hibernate等API中有很多方法抛出的是checked exception,而很多开发者并不能很好的处理异常。Spring提供了统一的API将这些checked exception的异常转换成Spring的unchecked exception。
    • 单元测试:Spring写出来的代码非常容易做单元测试,可以采用依赖注射(Dependency Injection)将测试的数据注射到程序中。

    Spring框架体系结构:

    img

    二、IOC(依赖注入)

    Spring 容器IOC 和 bean介绍

    本章介绍了控制反转原则的 Spring 框架实现。也被称为依赖注入。这是一个过程,对象仅通过构造函数参数、工厂方法的参数或者在对象实例被构造或者从工厂方法返回后在其上设置的属性来定义它们的依赖关系(也就是说,它们使用的其他对象)。然后容器在创建 bean 时注入这些依赖项。这个过程从根本上来说是 bean 本身的逆过程(因此得名为控制反转) ,通过使用类的直接构造或服务定位器模式之类的机制来控制其依赖项的实例化或位置。

    上面的话,简单的说就是 使用对象的人并不和对象有直接关联。

    控制反转:

    控制反转(Inversion of Control)是说创建对象的控制权发生转移,以前创建对象的主动权和创建时机由应用程序把控,而现在这种权利转交给 IoC 容器,它就是一个专门用来创建对象的工厂,你需要什么对象,它就给你什么对象。有了 IoC 容器,依赖关系就改变了,原先的依赖关系就没了,它们都依赖 IoC容器了,通过 IoC 容器来建立它们之间的关系。

    在这里插入图片描述

    在这里插入图片描述

    容器概述:

    Context.applicationcontext 接口代表 spring ioc 容器,负责实例化、配置和装配 bean。

    • Spring IOC容器就是一个org.springframework.context.ApplicationContext的实例化对象
    • 容器负责了实例化,配置以及装配一个bean

    ApplicationContext 接口表示 Spring IoC 容器,负责实例化、配置和装配 bean。容器通过读取配置元数据获取关于实例化、配置和组装什么对象的指令。配置元数据用 XML、 Java 注释或 Java 代码表示。它允许您表达组成应用程序的对象以及这些对象之间丰富的相互依赖关系。

    • ClassPathXmlApplicationContext
    • FileSystemXmlApplicationContext

    Spring 如何工作?

    container magic

    • Spring容器通过我们提交的pojo类以及配置元数据产生一个充分配置的可以使用的系统
    • 这里说的配置元数据,实际上我们就是我们提供的XML配置文件,或者通过注解方式提供的一些配置信息

    bean介绍

    在 Spring 中,构成应用程序主干的对象和由 Spring IoC 容器管理的对象称为 bean。Bean 是由 Spring IoC 容器实例化、组装和管理的对象。否则,bean 只是应用程序中的许多对象之一。

    配置元数据

    • 传统上,配置元数据是以一种简单和直观的 XML 格式提供的
    • 现在,大部分使用注解方式。

    基本结构

    下面的示例显示了基于 xml 的配置元数据的基本结构:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="..." class="...">  
            <!-- collaborators and configuration for this bean go here -->
        </bean>
        <bean id="..." class="...">
            <!-- collaborators and configuration for this bean go here -->
        </bean>
        <!-- more bean definitions go here -->
    </beans>
    
    • id 属性是标识单个 bean 定义的字符串
    • class 属性是全限定类名

    AOP

    面向切面编程,是针对面向对象编程的一种补充,同时也是spring中第二个最核心的功能,例如可以进行权限认证,日志输出等,可以无侵入的对原来的功能进行切面加入自定义的非业务功能。

    总结

    本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注自由互联的更多内容!

    网友评论