在 Spring Boot 中配置主类Main class

x33g5p2x  于2022-09-25 转载在 Spring  
字(3.5k)|赞(0)|评价(0)|浏览(856)

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 应用程序的成功构建。

使用 CLI 配置 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

相关文章

微信公众号

最新文章

更多