当前位置: java基础教程 > 29-springboot > 阅读正文

springboot主函数

2021.5.30.   1308 次   915字

了解一下springboot的主函数, 其中代码如下:

@SpringBootApplication
public class SpdevtoolsApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpdevtoolsApplication.class, args);
    }

}

springboot中的主函数, 作为程序的入口点, 如果是web程序, 会开启一个server

一个项目中, 应该有一个main函数, 而不是多个, 如果是多个需要进行额外的配置, 否则可能运行出错

main函数, 点开这个run方法, 源代码如下

    public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {
        return run(new Class[]{primarySource}, args);
    }

我们不难发现, 它实际上它是创建了一个对象数组, 它再次调用的run方法为

    public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) {
        return (new SpringApplication(primarySources)).run(args);
    }

到这里, 我们看到它再次调用了run方法, 这次仍然很复杂, 但至少能看到是实例化了springapplication这个类, 由于代码较长, 需要自行查阅

这个springapplication主要干了以下几件事

  • 推断应用是普通项目还是web项目, 以确定要开启的是什么服务
  • 扫描并自动加载所有可用初始化器, 设置到initializers属性中
  • 找出所有的应用程序监听器, 设置到listeners属性中
  • 推断并设置main方法的定义类, 找到运行的主类

结论是 : 传入的class必须是被自动配置的, 也就是@EnableAutoConfiguration, 也可以是包含了@EnableAutoConfiguration的组合注解, 启动后和main方法同级的类, 包均能被自动加载

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群