第一章:Spring 简介

1.1 官网

1.2 Spring 旗下的众多项目

Spring旗下的众多项目.png

第二章:Spring Framework

2.1 概述

  • Spring Framework 是 Spring 的基础框架,可以视为 Spring 的基础设施,基本上任何其他的 Spring 项目都是以 Spring Framework 为基础的。

2.2 Spring Framework 的优良特性

  • ① 非侵入式:使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
  • ② 控制反转:IOC —— Inversion of Control ,翻转资源获取方向。把自己创建资源、向环境索取资源变成环境将资源准备好,我们享受资源注入。
  • ③ 面向切面编程:AOP —— Aspect Oriented Programming ,在不修改源代码的基础上增强代码功能。
  • ④ 容器:Spring IOC 是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率。
  • ⑤ 组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML 和 Java 注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统。
  • ⑥ 声明式:很多以前需要编写代码才能实现的功能,现在只需要声明需求即可由框架代为实现。
  • ⑦ 一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且 Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基础上全部使用 Spring 来实现。

2.3 Spring Framework 五大功能模块

Spring Framework的模块.png

功能模块 功能介绍
Core Container 核心容器,在 Spring 环境下使用任何功能都必须基于 IOC 容器。
AOP&Aspects 面向切面编程
Testing 提供了对 junit 或 TestNG 测试框架的整合。
Data Access/Integration 提供了对数据访问/集成的功能。
Spring MVC 提供了面向Web应用程序的集成功能。

第三章:开发环境

  • JDK 11+。
  • IDEA 2021+。
  • MySQL 5.7。
  • Maven 3.8。

第四章:入门案例

4.1 导入相关依赖

  • Spring 相关的的 pom.xml
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-context</artifactId>
  4. <version>5.3.12</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>junit</groupId>
  8. <artifactId>junit</artifactId>
  9. <version>4.13.2</version>
  10. </dependency>
  • 完整项目的 pom.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.github.fairy-era</groupId>
  7. <artifactId>spring</artifactId>
  8. <version>1.0</version>
  9. <properties>
  10. <maven.compiler.source>11</maven.compiler.source>
  11. <maven.compiler.target>11</maven.compiler.target>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>org.springframework</groupId>
  16. <artifactId>spring-context</artifactId>
  17. <version>5.3.12</version>
  18. </dependency>
  19. <dependency>
  20. <groupId>junit</groupId>
  21. <artifactId>junit</artifactId>
  22. <version>4.13.2</version>
  23. </dependency>
  24. </dependencies>
  25. <repositories>
  26. <repository>
  27. <id>spring</id>
  28. <url>https://maven.aliyun.com/repository/spring</url>
  29. <releases>
  30. <enabled>true</enabled>
  31. </releases>
  32. <snapshots>
  33. <enabled>true</enabled>
  34. </snapshots>
  35. </repository>
  36. </repositories>
  37. </project>

4.2 创建 Bean

  • User.java
  1. package com.github.fairy.era.bean;
  2. import java.io.Serializable;
  3. /**
  4. * @author 许大仙
  5. * @version 1.0
  6. * @since 2021-11-05 08:43
  7. */
  8. public class User implements Serializable {
  9. public void add() {
  10. System.out.println("--------add方法--------");
  11. }
  12. }

4.3 创建 Spring 的配置文件,在配置文件中配置要创建的对象

  • applicationContext.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="user" class="com.github.fairy.era.bean.User"></bean>
  6. </beans>

4.4 测试

  • 测试:
package com.github.fairy.era.bean;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author 许大仙
 * @version 1.0
 * @since 2021-11-05 08:47
 */
public class UserTest {

    @Test
    public void test(){
        // 创建IOC容器
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 从IOC容器中获取User对象
        User user = context.getBean("user", User.class);
        // 调用add方法
        user.add();
    }

}