Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring

2022-10-31 14:30:19 浏览数 (1)

一、Spring介绍

简介

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform

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框架体系结构:

二、IOC(依赖注入)

Spring 容器IOC 和 bean介绍

This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. IoC is also known as dependency injection (DI). It is a process whereby objects define their dependencies (that is, the other objects they work with) only through constructor arguments, arguments to a factory method, or properties that are set on the object instance after it is constructed or returned from a factory method. The container then injects those dependencies when it creates the bean. This process is fundamentally the inverse (hence the name, Inversion of Control) of the bean itself controlling the instantiation or location of its dependencies by using direct construction of classes or a mechanism such as the Service Locator pattern. --spring官网

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

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

控制反转:

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

容器概述:

The org.springframework.context.ApplicationContext interface represents the Spring IoC container and is responsible for instantiating, configuring, and assembling the beans.

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

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

  • ClassPathXmlApplicationContext
  • FileSystemXmlApplicationContext

Spring 如何工作?

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

bean介绍

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

配置元数据

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

基本结构

代码语言:javascript复制
下面的示例显示了基于 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中第二个最核心的功能,例如可以进行权限认证,日志输出等,可以无侵入的对原来的功能进行切面加入自定义的非业务功能。

自言自语

重新学习Spring 的第一天,又开始了天天光顾Spring官网的日子。

0 人点赞