在 Spring Boot 应用中,类的加载时机主要2个阶段
一、启动阶段
- 当应用启动时,JVM 首先加载包含
main
方法的启动类。这个类通常会通过@SpringBootApplication
注解标识为 Spring Boot 应用的入口点。 - Spring Boot 的自动配置机制开始起作用。它会扫描类路径,查找满足特定条件的类,并加载相关的配置类。例如,根据依赖的库和配置文件,加载数据库连接配置、Web 服务器配置等。
- Spring 容器开始初始化。这个过程中,会加载被
@Component
、@Service
、@Repository
、@Controller
等注解标识的类,以及其他配置类中定义的 bean。这些类的加载是为了构建 Spring 容器中的 bean 定义,并为后续的实例化做准备。
二、运行阶段
- 在应用运行过程中,当某个特定的功能被调用时,如果需要加载特定的类,Spring 容器会根据需要动态加载这些类。例如,当一个控制器方法被调用,而该方法涉及到一个尚未加载的服务类时,Spring 会加载这个服务类并创建实例。
- 如果应用中使用了动态代理或 AOP(面向切面编程),相关的类可能会在切面被应用时加载。例如,当一个方法被代理以添加事务管理或日志记录等功能时,代理类会在方法调用时被加载。