基于 spring-boot-start开发的项目,其程序入口并不是我们开发的业务代码中定义了 main 函数的类,而是 Spring Boot 定义的 JarLauncher 类(下文源码反编译自 spring-boot-loader-1.5.8.RELEASE.jar)。
通常使用 spring boot 进行开发时,会定义类似以下程序入口
@SpringBootApplication
/**
* This @SpringBootApplication is a convenience annotation that adds all of the following:
* @Configuration tags the class as a source of bean definitions for the application context.
* @EnableAutoConfiguration tells Spring Boot to start adding beans based on classpath settings, other beans, and various property settings.
* @EnableWebMvc Normally you would add @EnableWebMvc for a Spring MVC app, but Spring Boot adds it automatically when it sees spring-webmvc on the classpath. This flags the application as a web application and activates key behaviors such as setting up a DispatcherServlet.
* @ComponentScan tells Spring to look for other components, configurations, and services in the hello package, allowing it to find the cont

Spring Boot项目的实际启动入口并非自定义的main函数,而是由Spring Boot的JarLauncher负责。当使用spring-boot-starter开发时,启动类查找依赖于MANIFEST.MF文件中的Start-Class。进一步深入,JarLauncher继承ExecutableArchiveLauncher,后者再继承Launcher,最终通过MainMethodRunner反射调用我们定义的main方法。
最低0.47元/天 解锁文章
1034

被折叠的 条评论
为什么被折叠?



