第一章:Spring 简介
1.1 官网
1.2 Spring 旗下的众多项目

第二章: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 五大功能模块

功能模块 |
功能介绍 |
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 导入相关依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.fairy-era</groupId>
<artifactId>spring</artifactId>
<version>1.0</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>spring</id>
<url>https://maven.aliyun.com/repository/spring</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
4.2 创建 Bean
package com.github.fairy.era.bean;
import java.io.Serializable;
/**
* @author 许大仙
* @version 1.0
* @since 2021-11-05 08:43
*/
public class User implements Serializable {
public void add() {
System.out.println("--------add方法--------");
}
}
4.3 创建 Spring 的配置文件,在配置文件中配置要创建的对象
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.github.fairy.era.bean.User"></bean>
</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();
}
}