Spring概述

  • Spring由Rod Johnson开发,2003年第一次发布。它是一个开源的以控制反转(Inverse of Control,IoC)和面向切面(Aspect Oriented Programming,AOP)为核心的容器框架,用于简化企业级开发。
  • 在分层体系架构的系统中,Spring对每一层都提供了技术支持。
  • 控制反转:依赖对象不再由调用者来创建,而是由外部容器负责,此时对依赖对象的控制权就由应用转移到了外部容器。这种控制权的转移就称为控制反转。实例化调用者时,可通过依赖注入的方式将依赖对象注入到应用的组件中。
  • 传统的方式创建personDao对象
  • 依赖注入方式获得personDao对象
  • Spring实例化bean方式
  1. 构造器实例化:通过无参或有参构造器实例化。
  2. 静态工厂方式实例化:要求创建一个静态工厂的方
    法来创建Bean的实例。
  3. 实例工厂方式实例化:要求创建一个实例工厂的方
    法来创建Bean的实例。
  • 使用Spring好处:
    可以降低组件之间的耦合程度,实现软件各层之间的解耦。(Contoller Service Dao)
    Spring为我们提供了众多服务,如事务管理等
    容器提供了单例模式支持
    Spring提供了AOP技术,利用它可以很容易实现权限拦截等功能
    Spring为我们提供了众多的辅助类,如HibernateTemplate等类
    Spring提供了对主流的应用框架(如Hibernate、Struts等)的集成支持

Spring的配置文件

Spring配置文件定义了应用程序所用到的各种bean,描述了bean与bean之间的依赖关系。
配置文件使用标签来定义每个bean,一般需要设置以下两个属性:

  • id:bean的标识符,其它bean通过该标识符来引用bean,在整个容器中必须唯一(id属性值不能使用特殊符号如“/”,此时可使用name属性替换id属性)。
  • class:指定bean的实现类

Spring容器

  • BeanFactory(IoC容器):是Spring框架最基本的接口,构建了框架的基础结构,面向Spring本身。它提供了高级IoC的配置机制,使创建、管理各种各样的Bean成为可能。
  • ApplicationContext(应用上下文,spring容器)建立在BeanFactory基础之上,提供了更多面向应用的功能,更易于创建实际应用。面向使用Spring框架的开发者

初始化Spring容器

在类路径下寻代配置文件来初始化容器

springtoolsuite简介_配置文件


默认情况下,ApplicationContext初始化时会实例化容器中所有的Bean。

springtoolsuite简介_spring_02

此后,用户就可以通过Spring上下文实例调用getBean(id)方法获取指定的Bean。

springtoolsuite简介_配置文件_03

Bean的初始化和销毁

  • 有时在创建Bean时需要执行一些初始化工作,如打开数据库链接等资源;同样的,在销毁Bean时,也常常需要执行一些特定工作,如关闭已打开的资源。
  • 对作用域为单例的Bean,通过相应的设置后,其初始化工作和销毁工作都将由容器自动来执行

Bean的初始化:

Bean的初始化:可在其实例化后自动执行初始化方法。
语法:
在配置文件的中通过init-method属性指定初始化方法。
在类中定义初始化方法,方法名为配置文件中所指定的初始化方法名。

单例Bean的销毁:

Bean的销毁:可在单例Bean销毁前自动执行销毁方法。
语法:
在配置文件的中通过destory-method属性指定销毁方法
在类中定义销毁方法,方法名为配置文件中所指定的销毁方法名。

配置文件的加载:

  • 在实际开发中,从表现层的Action到持久层的DataSource之间的所有对象都被Spring作为Bean来管理。如果这些Bean都配置在同一个xml文件中,将不利于阅读和维护。
  • 在Spring中,一般是将一个大的配置文件按模块分成多个小的配置文件来管理,在运行时再将这些配置文件加载汇总成一个配置文件。

配置文件的加载方式:

  • 使用ApplicationContext加载多个配置文件。
  • springtoolsuite简介_实例化_04

  • 在一个XML配置文件中使用标签导入其它XML配置文件,然后由ApplicationContext加载这个配置文件。
  • springtoolsuite简介_配置文件_05


  • springtoolsuite简介_配置文件_06

  • Web应用启动时加载多个配置文件:
  • 在Web应用开发中,ApplicationContext.xml是在web.xml中配置加载,此时可以通过ContextLoader接口的实现类以声明式的方式创建ApplicationContext。
  • ContextLoader接口的实现类: ContextLoaderListener ContextLoaderServlet
  • 在web.xml的之间添加以下配置:
  • springtoolsuite简介_springtoolsuite简介_07

总 结

  1. Spring是一个以IoC和AOP为核心的容器框架。
  2. Spring最常用的实例化Bean方式:构造器实例化。
  3. Spring配置文件的作用、命名、保存位置。
  4. Bean的作用域及默认作用域。
  5. 默认情况下,ApplicationContext初始化时会实例化容器中所有的Bean。
  6. 对作用域为单例的Bean,通过相应的设置后,其初始化工作和销毁工作都将由容器自动来执行。
  7. 配置文件的加载有三种方式。

示例:

pom.xml:

<dependencies>
        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.1</version>
        </dependency>


    </dependencies>