小编典典

SpringApplication.run主要方法

spring-boot

我使用Spring Starter项目模板在Eclipse中创建了一个项目。

它会自动创建一个Application类文件,并且该路径与POM.xml文件中的路径匹配,因此一切都很好。这是Application类:

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {

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

这是我正在构建的命令行应用程序,为了使其运行,我必须注释掉SpringApplication.run行,然后从其他类中添加main方法来运行。除了这个快速的jerry-
rig,我还可以使用Maven来构建它,并且它可以作为Spring应用程序运行。

但是,我宁愿不必注释掉这一行,而使用完整的Spring框架。我怎样才能做到这一点?


阅读 813

收藏
2020-05-30

共1个答案

小编典典

您需要运行,Application.run()因为此方法将启动整个Spring Framework。下面的代码将您main()与Spring
Boot 集成在一起。

Application.java

@SpringBootApplication
public class Application {

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

ReconTool.java

@Component
public class ReconTool implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        main(args);
    }

    public static void main(String[] args) {
        // Recon Logic
    }
}

为什么不 SpringApplication.run(ReconTool.class, args)

由于这种方式,弹簧未完全配置(无组件扫描等)。仅创建在run()中定义的bean(ReconTool)。

示例项目:https//github.com/mariuszs/spring-run-
magic

2020-05-30