SpringApplication.run(Classname.class, args)
загружает весеннее приложение как отдельное приложение из основного метода. Он создает соответствующий экземпляр ApplicationContext и загружает компоненты.
По умолчанию, если основной класс не указан явно, Spring будет искать его в пути к классам во время компиляции и не сможет запуститься, если не будет найдено ни одного, или нескольких из них.
Давайте посмотрим, как мы можем настроить основной класс в Spring Boot.
Джава
xxxxxxxxxx
1
2
public class SpringBootMainClassApplication {
3
4
public static void main(String[] args) {
5
SpringApplication.run(SpringBootMainClassApplication.class, args);
6
}
7
8
}
Это основной класс нашей формы приложения, который будет выполняться приложением Spring Boot. Теперь давайте создадим один контроллер домашней страницы, чтобы открыть домашнюю страницу приложения.
Джава
xxxxxxxxxx
1
2
public class HomeController {
3
4
"/") (
5
6
public String goToHomePage () {
7
return "<h1>This is the Home page</h1>";
8
}
9
10
}
Вы также можете быть заинтересованы в:
Hibernate 5 Пример конфигурации Java
Ниже приведен файл POM.xml для нашего проекта Spring Boot.
XML
1
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4
<modelVersion>4.0.0</modelVersion>
5
<parent>
6
<groupId>org.springframework.boot</groupId>
7
<artifactId>spring-boot-starter-parent</artifactId>
8
<version>2.1.9.RELEASE</version>
9
<relativePath></relativePath> <!-- lookup parent from repository -->
10
</parent>
11
<groupId>com.dailycodebufffer.example</groupId>
12
<artifactId>Spring-Boot-Main-Class</artifactId>
13
<version>0.0.1-SNAPSHOT</version>
14
<name>Spring-Boot-Main-Class</name>
15
<description>Demo project for Spring Boot</description>
16
17
<properties>
18
<java.version>11</java.version>
19
</properties>
20
21
<dependencies>
22
<dependency>
23
<groupId>org.springframework.boot</groupId>
24
<artifactId>spring-boot-starter-web</artifactId>
25
</dependency>
26
27
<dependency>
28
<groupId>org.springframework.boot</groupId>
29
<artifactId>spring-boot-starter-test</artifactId>
30
<scope>test</scope>
31
</dependency>
32
</dependencies>
33
34
<build>
35
<plugins>
36
<plugin>
37
<groupId>org.springframework.boot</groupId>
38
<artifactId>spring-boot-maven-plugin</artifactId>
39
</plugin>
40
</plugins>
41
</build>
42
43
</project>
Теперь, когда вы запустите приложение с mvn spring-boot:run
командой в Терминале, приложение Spring Boot запустится на порту 8081, как настроено в файле application.properties. Посмотрите на скриншот ниже для успешной сборки и домашней страницы приложения.
Теперь давайте создадим новый класс Spring Main в приложении. После создания этого класса у нас будет два новых основных класса с двумя public static void main(String args[])
методами.
Джава
xxxxxxxxxx
1
2
public class SpringBootMainClassApplication2 {
3
4
public static void main(String[] args) {
5
SpringApplication.run(SpringBootMainClassApplication2.class, args);
6
}
7
}
Как мы знаем из основ Java, в приложении Java может быть только один основной метод. Когда мы пытаемся построить это приложение, оно выдаст исключение, как показано ниже.
Как мы решаем это?
Spring Boot позволяет нам определять класс Main в конфигурации, когда у нас есть несколько основных классов, объявленных в приложении. Поскольку мы используем сборку MAVEN, нам нужно настроить POM.xml для Spring Boot, чтобы определить основной класс приложения.
Ниже приведены необходимые изменения в файле POM.xml:
XML
xxxxxxxxxx
1
<build>
2
<plugins>
3
<plugin>
4
<groupId>org.springframework.boot</groupId>
5
<artifactId>spring-boot-maven-plugin</artifactId>
6
<configuration>
7
<mainClass>com.dailycodebufffer.example.SpringBootMainClass.SpringBootMainClassApplication</mainClass>
8
</configuration>
9
</plugin>
10
</plugins>
11
</build>
Вуаля! Мы можем определить любой из основных классов в конфигурации. Ниже, проверьте успешную сборку нашего приложения Spring Boot.
Использование CLI для настройки основного класса в Spring Boot
Мы также можем указать основной класс через интерфейс командной строки.
Spring Boot org.springframework.boot.loader.PropertiesLauncher
поставляется с аргументом JVM, позволяющим переопределить логический основной класс, называемый loader.main :
PowerShell
xxxxxxxxxx
1
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 .
Дальнейшее чтение
Пример аннотации @SpringBootApplication в Java + Spring Boot
Настройка Spring Boot: переопределение встроенной конфигурации