diff --git a/yami-shop-api/src/main/java/com/yami/shop/api/ApiApplication.java b/yami-shop-api/src/main/java/com/yami/shop/api/ApiApplication.java index 396ae18..64c86e3 100644 --- a/yami-shop-api/src/main/java/com/yami/shop/api/ApiApplication.java +++ b/yami-shop-api/src/main/java/com/yami/shop/api/ApiApplication.java @@ -9,13 +9,13 @@ */ // 声明该类所在的包名,在Java中包用于对类进行组织和分类管理,方便代码的模块化以及避免类名冲突等问题。 +// 此处表明该类属于com.yami.shop这个包结构下,后续相关的类可以按照包的层次结构进行合理组织和查找。 package com.yami.shop.api; // 引入Spring Boot相关的核心注解,用于标记这是一个Spring Boot应用程序,它会开启Spring Boot的自动配置等一系列功能,简化Spring应用的搭建和部署流程。 import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; // 用于以编程方式构建Spring Boot应用程序,特别是在需要对应用的启动配置等进行更多定制化操作时会用到,比如配置应用的启动类、配置文件等信息。 -import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.autoconfigure.SpringBootApplication; // Spring Boot提供的一个用于支持将Spring Boot应用部署为Web应用(例如部署到Servlet容器中)的基础类,通常需要继承它来做相关的适配和初始化工作。 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; // 用于指定Spring需要扫描的组件所在的基础包路径,Spring会在这些包及其子包下查找带有相关注解(如 @Component、@Service等)的类,并将它们注册为Spring容器中的组件,便于进行依赖注入等操作。 @@ -23,22 +23,28 @@ import org.springframework.context.annotation.ComponentScan; /** * @author lgh - * 该类是整个API应用的启动类,负责启动Spring Boot应用,配置相关的组件扫描以及支持将应用部署到Servlet容器等功能。 + * 该类是整个API应用的启动类,它承担着启动Spring Boot应用的核心职责,同时配置了相关的组件扫描机制以及提供了将应用部署到Servlet容器时所需的支持功能,是整个应用启动流程的关键入口点。 */ +// @SpringBootApplication是一个复合注解,它整合了多个Spring相关的注解,例如 @Configuration(表示这是一个配置类)、@EnableAutoConfiguration(开启Spring Boot的自动配置功能)以及 @ComponentScan(默认扫描当前类所在的包及其子包下的组件)等。 +// 在这里使用它来标记这个类是Spring Boot应用的主配置类,Spring Boot会基于这个类进行一系列的启动和配置操作。 @SpringBootApplication // 通过 @ComponentScan 注解指定Spring要扫描的基础包路径为 "com.yami.shop",意味着Spring会在这个包及其子包下查找并注册各种Spring组件(如控制器、服务类、数据访问层等)到Spring容器中,以便进行后续的依赖注入和业务逻辑处理。 +// 这样可以确保我们自定义的各个业务组件能够被Spring正确识别并管理起来,方便在不同的组件之间进行依赖注入,实现各种业务功能。 @ComponentScan(basePackages = {"com.yami.shop"}) public class ApiApplication extends SpringBootServletInitializer { - // 应用的主入口方法,Java应用程序从这个方法开始执行。当运行这个类的 main 方法时,会启动Spring Boot应用,加载配置、初始化Spring容器并启动相关的Web服务等(如果是Web应用的话)。 - public static void main(String[] args) { - // 使用SpringApplication类的静态方法 run 来启动Spring Boot应用,传入当前启动类(ApiApplication.class)以及命令行参数 args,Spring Boot会根据配置自动完成一系列的初始化和启动操作。 - SpringApplication.run(ApiApplication.class, args); - } + // 应用的主入口方法,Java应用程序从这个方法开始执行。当运行这个类的 main 方法时,会启动Spring Boot应用,加载配置、初始化Spring容器并启动相关的Web服务等(如果是Web应用的话)。 + // 它是整个应用启动的起始点,类似于传统Java应用中程序开始执行的地方,只不过在这里借助Spring Boot的功能来完成更复杂的应用启动流程。 + public static void main(String[] args) { + // 使用SpringApplication类的静态方法 run 来启动Spring Boot应用,传入当前启动类(ApiApplication.class)以及命令行参数 args,Spring Boot会根据配置自动完成一系列的初始化和启动操作。 + // 这个方法内部会执行诸如加载配置文件(application.properties或application.yml等)、创建Spring容器(ApplicationContext)、扫描并注册组件、启动嵌入式Web服务器(如果是Web应用)等一系列操作,使得整个应用能够正常运行起来。 + SpringApplication.run(ApiApplication.class, args); + } - // 重写SpringBootServletInitializer类中的configure方法,用于配置Spring Boot应用在Servlet容器中的启动方式,这里返回一个SpringApplicationBuilder对象,并指定应用的启动类为ApiApplication.class,以便在Servlet容器中正确地启动Spring Boot应用。 - @Override - protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { - return builder.sources(ApiApplication.class); - } + // 重写SpringBootServletInitializer类中的configure方法,用于配置Spring Boot应用在Servlet容器中的启动方式,这里返回一个SpringApplicationBuilder对象,并指定应用的启动类为ApiApplication.class,以便在Servlet容器中正确地启动Spring Boot应用。 + // 当将Spring Boot应用部署到外部的Servlet容器(如Tomcat、Jetty等)时,容器会调用这个方法来构建和配置Spring Boot应用,确保应用能够在该容器环境下正常启动和运行,实现与Servlet容器的良好集成。 + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { + return builder.sources(ApiApplication.class); + } } \ No newline at end of file