如何在Spring Boot中选择不同的主类运行

我们在使用SpringBoot时,都会在某个类的main方法中写下SpringApplication.run(Classname.class, args)从而引导spring应用程序作为独立的应用程序运行。它创建一个适当的应用上下文实例并加载beans。

默认情况下,如果没有明确指定主类,Spring将在编译时在类路径中搜索一个主类,如果找不到或找不到多个主类,将无法启动。

让我们看看如何在Spring Boot中配置一个主类。

1.  `@SpringBootApplication`2.  `public  class  SpringBootMainClassApplication  {`3.  `public  static  void main(String[] args)  {`4.  `SpringApplication.run(SpringBootMainClassApplication.class, args);`5.  `}`6.  `}`

这是我们的应用程序的主要类,Spring Boot应用程序将在其中执行。现在让我们创建一个controller 来打开应用程序的主页。

1.  `@Controller`2.  `public  class  HomeController  {`3.  `@RequestMapping("/")`4.  `@ResponseBody`5.  `public  String goToHomePage ()  {`6.  `return  "

This is the Home page


";`7. `}`8. `}`


POM.xml文件我们省略不看,用缺省的即可。

现在,使用运行应用程序时mvn spring-boot:run 命令,Spring Boot应用程序将在端口8080中启动。




spring项目打包后报错无法找到主类 springboot打包找不到主类_spring项目打包后报错无法找到主类


现在,让我们在应用程序中创建一个新的Spring Main类。创建这个类后,我们将有两个新的主类都拥有public static void main(String args[])方法:


spring项目打包后报错无法找到主类 springboot打包找不到主类_androidkiller找不到主类_02


正如我们从Java基础知识中所知道的,在一个Java应用程序中我们只能有一个主要的方法。当我们试图构建这个应用程序时,它会抛出如下异常:


spring项目打包后报错无法找到主类 springboot打包找不到主类_spring项目打包后报错无法找到主类_03


我们如何解决这个问题?

当应用程序中声明了多个主类时,Spring Boot允许我们在配置中定义主类。当我们使用MAVEN构建时,我们必须为Spring Boot配置POM.xml来识别应用程序的主要类。

以下是POM.xml文件中需要的更改:


spring项目打包后报错无法找到主类 springboot打包找不到主类_devc编译器配置如何配置_04


这样我们可以选择任何一个主类作为我们SpringBoot程序的启动主类。

使用命令行界面配置主类

我们还可以通过命令行界面指定一个主类。

Spring Boot的 org.springframework.boot.loader.PropertiesLauncher中 附带了一个JVM参数,允许我们指定运行的主类是哪一个:


spring项目打包后报错无法找到主类 springboot打包找不到主类_spring项目打包后报错无法找到主类_05


结论

因此有多种方法可以指定Spring Boot应用程序的入口点,利用好了,可以在不同的环境下运行我们同一个SpringBoot程序的不同版本。