[toc]
| 单词 | 词性 | 音标 | 含义 |
|---|---|---|---|
| starter | n. | /ˈstɑːtə(r)/ | 启动器(Spring Boot中的核心概念,是预配置的依赖集合,如spring-boot-starter-web包含Web开发所需的所有依赖,简化依赖管理) |
| definition | n. | /ˌdefɪˈnɪʃn/ | 定义(编程中常指组件或配置的声明,如Spring中Bean的definition描述了Bean的类型、依赖等元信息,用于容器创建Bean实例) |
| Annotation | n. | /ˌænəˈteɪʃn/ | 注解(Java中的元数据标记,Spring大量使用注解简化配置,如@Controller标识控制器、@Service标识服务层、@Autowired实现依赖注入) |
Lecture03-容器-[实验01]创建工程,搭建环境
一、说明
由于以后实际开发中,我们肯定都是在SpringBoot环境下开发,而SpringBoot是Spring Framework的进一步简化和封装,所以我们直接在SpringBoot环境下学习Spring Framework
二、创建工程
1、创建普通module

2、配置pom.xml
①继承SpringBoot
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.12</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
②导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 根据需要加入 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- test starter 是为了引入测试相关环境 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
③构建插件
下面配置都是配合 Lombok 的使用,具体使用 Lombok 的时候再加也可以
<build>
<plugins>
<!-- 配置 Lombok 参与 Maven 构建过程中的编译环节 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<!-- spring-boot-maven-plugin插件现阶段用不上,可以不加 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
3、创建主启动类
SpringBoot 环境的要求:以主启动类中的 main() 方法作为整个程序的入口。语法层面的具体要求:
- 类上必须标记 @SpringBootApplication 注解
- 在 main() 方法中调用 SpringApplication.run(Module39MainType.class, args); 方法
- 参数 1:主启动类.class 主启动类.class 是一个对象代表一个类的字节码文件(主启动类.class 字节码文件)
- 参数 2:main() 方法的 args 参数

package com.atguigu.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Module39MainType {
public static void main(String[] args) {
SpringApplication.run(Module39MainType.class, args);
}
}
4、创建测试程序
①建包
测试程序所在包要求:
-
根据 Maven 的要求必须放在 src/test/java 目录下
-
必须放在主启动类所在包或子包下
②创建测试类

junit使用的是 Junit5 提供的 @Test 注解:

// 必须导入了 spring-boot-starter-test 依赖,@SpringBootTest 注解才可以使用
@SpringBootTest
public class DemoTest {
@Test
public void test01() {
// 单元测试的方法
}
}
三、POM文件解读
1、父工程
为了使用SpringBoot中已经严格测试过的大量依赖,我们需要继承SpringBoot提供的父工程(想用吗?想用就叫爸爸,叫啊!)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- 这里就是具体使用的SpringBoot版本 -->
<!-- 如有需要,可以在这里修改 -->
<!-- 友情提示:其实并不是最新版最好 -->
<version>3.3.12</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
如果创建工程后,在 IDEA 中 SpringBoot 父工程爆红:

可以通过运行Maven命令解决:
mvn dependency:list
列出当前Maven工程依赖列表,底层逻辑是:
列出所有依赖,就需要确认每一个依赖;
确认每一个依赖就需要从父工程读取依赖版本;
从父工程读取依赖版本,就需要下载父工程对应的POM
2、依赖列表
<dependencies>
<!-- 基础 starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 基于注解生成同样代码的工具类 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- SpringBoot 用于测试的 starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
四、SpringBoot工程结构说明

五、IoC容器对象登场
run()方法的返回值,就是IoC容器对象:
public static void main(String[] args) {
ConfigurableApplicationContext ioc = SpringApplication.run(Module21SpringIocApplication.class, args);
System.out.println("ioc = " + ioc);
}
执行main()方法:
ioc = org.springframework.context.annotation.AnnotationConfigApplicationContext@d41f816, started on Thu May 22 23:28:49 CST 2025
即使我们没有定义任何bean,IoC容器中仍然存在很多内置bean对象,我们可以读取它们的名称:
String[] definitionNames = ioc.getBeanDefinitionNames();
for (String definitionName : definitionNames) {
System.out.println("definitionName = " + definitionName);
}
执行代码就运行主启动类中的 main() 方法就行
IDEA提示 Use Service,可以点一下

