SpringApplication.run(Classname.class, args)
从 main 方法引导一个 spring 应用程序作为一个独立的应用程序。它创建一个适当的 ApplicationContext 实例并加载 bean。
默认情况下,如果没有显式指定主类,Spring会在编译时在类路径中搜索一个,如果没有找到或多个则启动失败。
让我们看看如何在 Spring Boot 中配置主类
@SpringBootApplication
public class SpringBootMainClassApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMainClassApplication.class, args);
}
}
这是 Spring Boot 应用程序将执行的应用程序表单的主类。现在让我们创建一个主页控制器来打开应用程序的主页。
@Controller
public class HomeController {
@RequestMapping("/")
@ResponseBody
public String goToHomePage () {
return "<h1>This is the Home page</h1>";
}
}
下面是 Spring Boot 项目的 POM.xml 文件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dailycodebufffer.example</groupId>
<artifactId>Spring-Boot-Main-Class</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Spring-Boot-Main-Class</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
现在,当您在终端中使用 mvn spring-boot:run
命令运行应用程序时,Spring Boot 应用程序将在 application.properties 文件中配置的端口 8081 上启动。查看以下屏幕截图,了解应用程序的构建成功和主页。
现在,让我们在应用程序中创建一个新的 Spring Main 类。创建这个类之后,我们将拥有两个新的主类,其中包含两个 public static void main(String args[])
方法。
@SpringBootApplication
public class SpringBootMainClassApplication2 {
public static void main(String[] args) {
SpringApplication.run(SpringBootMainClassApplication2.class, args);
}
}
从 Java 101 中我们知道,Java 应用程序中只能有一个 main 方法。当我们尝试构建这个应用程序时,它会抛出一个异常,如下所示。
现在,如何解决这个问题?
当我们在应用程序中声明了多个主类时,Spring Boot 允许我们在配置中定义主类。由于我们使用的是 MAVEN 构建,我们必须为 Spring Boot 配置 POM.xml 以识别应用程序的主类。
以下是 POM.xml 文件中所需的更改(突出显示的更改)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.dailycodebufffer.example.SpringBootMainClass.SpringBootMainClassApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
瞧!!!我们可以在配置中定义任何主要的类。在下面检查我们的 Spring Boot 应用程序的成功构建。
我们还可以通过命令行界面指定一个主类。
Spring Boot 的 org.springframework.boot.loader.PropertiesLauncher 带有一个 JVM 参数,可让您覆盖名为 loader.main 的逻辑主类:
java -cp Spring-Boot-Main-Class-0.0.1-SNAPSHOT.jar -Dloader.main=com.dailycodebufffer.example.SpringBootMainClass.SpringBootMainClassApplication org.springframework.boot.loader.PropertiesLauncher
有多种方法可以指定 Spring Boot 应用程序的入口点。重要的是要知道所有这些配置只是修改 JAR 或 WAR 文件清单的不同方式。一如既往,请在 Github 中找到代码:Click Here
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.dailycodebuffer.com/configuring-a-main-class-in-spring-boot/
内容来源于网络,如有侵权,请联系作者删除!