18.使用@SpringBootApplication Annotation
许多Spring Boot开发人员喜欢他们的应用程序使用自动配置,组件扫描,并能够在他们的“应用程序类”上定义额外的配置。单
个 @SpringBootApplication 注释可用于启用这三个功能,即:
@EnableAutoConfiguration :启用Spring Boot的自动配置机制
@ComponentScan :对应用程序所在的软件包启用 @Component 扫描(请参阅最佳实践)
@Configuration :允许在上下文中注册额外的beans或导入其他配置类
@SpringBootApplication 注释等效于使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 及其默认属性,如以下示
例所示:
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication 还提供了别名来自定义 @EnableAutoConfiguration 和 @ComponentScan 的属性。
这些功能中的None是强制性的,您可以选择使用它启用的任何功能替换此单个注释。例如,您可能不希望在应用程序中使用组件
扫描:
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在此示例中, Application 与任何其他Spring Boot应用程序一样,除了 @Component - 未自动检测带注释的类,并且显式导入用
户定义的beans(请参阅 @Import ) 。
19.运行您的应用程序
将应用程序打包为jar并使用嵌入式HTTP服务器的最大优势之一是,您可以像运行任何其他服务器一样运行应用程序。调试Spring Boot应用程序
也很容易。您不需要任何特殊的IDE插件或扩展。
本节仅介绍基于罐子的包装。如果您选择将应用程序打包为war文件,则应参阅服务器和IDE文档。
19.1从IDE运行
您可以从IDE运行Spring Boot应用程序作为简单的Java应用程序。但是,您首先需要导入项目。导入步骤因IDE和构建系统而异。大多数IDE可
以直接导入Maven项目。例如,Eclipse用户可以从 File 菜单中选择 Import… → Existing Maven Projects 。
如果无法将项目直接导入IDE,则可以使用构建插件生成IDE元数据。Maven包括Eclipse和 IDEA的插件 。Gradle提供各种IDE的插件 。
如果您不小心运行了两次Web应用程序,则会看到“端口已在使用中”错误。STS用户可以使用 Relaunch 按钮而不是 Run 按钮
来确保关闭任何现有实例。
19.2作为打包应用程序运行
如果您使用Spring Boot Maven或Gradle插件创建可执行jar,则可以使用 java -jar 运行应用程序,如以下示例所示:
$ java -jar target/myapplication-0.0.1-SNAPSHOT.jar
也可以运行启用了远程调试支持的打包应用程序。这样做可以将调试器附加到打包的应用程序,如以下示例所示:
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n
-jar target/myapplication-0.0.1-SNAPSHOT.jar
19.3使用Maven插件
Spring Boot Maven插件包含 run 目标,可用于快速编译和运行您的应用程序。应用程序以分解形式运行,就像在IDE中一样。以下示例显示了
运行Spring Boot应用程序的典型Maven命令:
$ mvn spring-boot:run
您可能还想使用 MAVEN_OPTS 操作系统环境变量,如以下示例所示:
$ export MAVEN_OPTS=-Xmx1024m