如何在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 Main类。创建这个类后,我们将有两个新的主类都拥有public static void main(String args[])方法:
正如我们从Java基础知识中所知道的,在一个Java应用程序中我们只能有一个主要的方法。当我们试图构建这个应用程序时,它会抛出如下异常:
我们如何解决这个问题?
当应用程序中声明了多个主类时,Spring Boot允许我们在配置中定义主类。当我们使用MAVEN构建时,我们必须为Spring Boot配置POM.xml来识别应用程序的主要类。
以下是POM.xml文件中需要的更改:
这样我们可以选择任何一个主类作为我们SpringBoot程序的启动主类。
使用命令行界面配置主类
我们还可以通过命令行界面指定一个主类。
Spring Boot的 org.springframework.boot.loader.PropertiesLauncher中 附带了一个JVM参数,允许我们指定运行的主类是哪一个:
结论
因此有多种方法可以指定Spring Boot应用程序的入口点,利用好了,可以在不同的环境下运行我们同一个SpringBoot程序的不同版本。