我使用Spring starter项目模板在Eclipse中创建了一个项目。
它自动创建了一个Application类文件,并且该路径与POM.xml文件中的路径相匹配,所以一切都很顺利。下面是应用程序类:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
//SpringApplication.run(ReconTool.class, args);
ReconTool.main(args);
}
}
这是我正在构建的一个命令行应用程序,为了让它运行,我必须注解掉SpringApplication.run行,然后添加来自要运行的其他类的Main方法。除了这个快速的曾傑瑞平台,我可以使用Maven构建它,它在某种程度上是作为一个Spring应用程序运行的。
然而,我宁愿不必注解掉这一行,而使用完整的Spring框架。我怎么能这样做呢?
3条答案
按热度按时间ki1q1bka1#
您需要运行
SpringApplication.run()
,因为该方法启动整个Spring框架。下面的代码将main()
与Spring Boot集成在一起。Application.java
ReconTool.java
为何不选择
SpringApplication.run(ReconTool.class, args)
因为这种方式没有完全配置Spring(没有组件扫描等)。只有在run()中定义的Bean才被创建(RestTool)。
示例项目:https://github.com/mariuszs/spring-run-magic
khbbv19g2#
使用:
在任何情况下都能工作。是要从IDE还是从生成工具启动应用程序。
使用maven只需使用
mvn spring-boot:run
而在Gradle中则为
gradle bootRun
在Run方法下添加代码的另一种方法是使用实现
CommandLineRunner
的Spring Bean。这将看起来像是:从Spring的官方指南资源库查看this指南。
可以在此处找到完整的Spring Boot文档
nsc4cvqm3#
另一种方法是扩展应用程序(因为我的应用程序继承和定制父应用程序)。它自动调用父级及其命令行运行器。