Spring简介


概述

Spring 是一款 Java SE/EE 轻量级开源框架
Spring 由“Spring 之父”Rod Johnson 提出并创立
目的是用于简化 Java 企业级应用的开发难度和开发周期
Spring 框架不局限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益
官网:https://spring.io/

优势

  1. 方便解耦,简化开发
    Spring 就是一个大工厂,可以将对象的创建和依赖关系的维护交给 Spring 管理。
  2. 方便集成各种优秀框架
    Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。
  3. 降低 Java EE API 的使用难度
    Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。
  4. 方便程序的测试
    Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。
  5. AOP 编程的支持
    Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。
  6. 声明式事务的支持
    只需要通过配置就可以完成对事务的管理,而无须手动编程

Spring的核心机制

管理Bean
程序通过Spring容器来访问容器中的Bean
ApplicationContext是Spring容器最常用的接口,该接口有如下两个实现类:
ClassPathXmlApplicationContext: 从类加载路径下搜索配置文件,并根据配置文件来创建Spring容器。
FileSystemXmlApplicationContext: 从文件系统的相对路径或绝对路径下去搜索配置文件,并根据配置文件来创建Spring容器。

public class BeanTest{
    public static void main(String args[]) throws Exception{
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        Person p = ctx.getBean("person", Person.class);
        p.say();
    }
}

容器

接口
BeanFactory Spring容器顶层接口
ApplicationContext BeanFactory的子接口
区别:
创建对象的时机不一样。
ApplicationContext:只要一读取配置文件,默认情况下就会创建对象
BeanFactory:使用的时候创建对象
ApplicationContext 接口的实现类
基于xml的实现类
ClassPathXmlApplicationContext 从类的根路径下加载配置文件(xml)推荐
FileSystemXmlApplicationContext 从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置
基于注解的实现类
AnnotationConfigApplicationContext 使用注解配置容器对象,使用此类创建 spring 容器。用来读取注解

Bean

Spring 容器管理的Java对象称为bean对象
创建应用对象之间的协作关系的行为称为:装配(wiring),这就是依赖注入的本质。

Spring框架的组成结构(体系结构)

表现层(web)、业务逻辑层(service)、持久层(dao)。

接口(类)结构

Spring框架的核心功能有两个:

Spring容器作为超级大工厂,负责创建、管理所有的Java对象,这些Java对象被称为Bean
Spring容器管理容器中Bean之间的依赖关系,Spring使用一种被称为”依赖注入”的方式来管理Bean之间的依赖关系
使用依赖注入,不仅可以为Bean注入普通的属性值,还可以注入其他Bean的引用
依赖注入是一种优秀的解耦方式,其可以让Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。
控制反转(Inverse of Control,IoC),依赖注入(Dependency Injection):
以配置文件来管理Java实例的协作关系
依赖注入,控制反转,其含义完全相同
使用Spring后,调用者获取被依赖对象的方式由原来的主动获取,变成了被动接受——所以Rod Johnson称之为控制反转。
从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量——相当于为调用者注入它依赖的实例,因此Martine Fowler称之为依赖注入

AOP(面向切面)

spring 的使用

  • 普通项目

    1. 使用jar包
  • maven项目

    1. pom.xml
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.0.2.RELEASE</version>
      </dependency>
    2. 让 spring 管理资源,使用基于xml或基于注解的方式
    3. 创建spring容器,从spring容器中获取需要的bean对象

文章作者: zrh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zrh !
  目录