第一章: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();
}
}