Spring Boot @SpringBootApplication注解使用示例

x33g5p2x  于2022-10-06 转载在 Spring  
字(1.9k)|赞(0)|评价(0)|浏览(332)

在这篇文章中,我们将通过一个例子讨论一个非常重要的Spring Boot注解,即@SpringBootApplication

@SpringBootApplication注解概述

@SpringBootApplication注解表示一个配置类,它声明了一个或多个@Beanmethods,还触发了自动配置和组件扫描。这是一个方便的注解,相当于声明了@Configuration, @EnableAutoConfiguration, and @ComponentScan

下图显示了@SpringBootApplication注解的一个内部实现。

@SpringBootApplication注解等同于使用@Configuration, @EnableAutoConfiguration, 和@ComponentScan的默认属性。

@SpringBootApplication注解示例

我们使用这个注解来标记Spring Boot应用程序的主类:

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);
    }
}

Spring Boot @SpringBootApplication注解用于标记一个配置类,该类声明了一个或多个@Bean方法,还触发了自动配置和组件扫描。

@SpringBootApplication注解是以下三个Spring注解的组合。

@Configuration

这个注解将一个类标记为配置类,用于基于Java的配置。

@ComponentScan

这个注解使组件扫描成为可能,这样你创建的Web控制器类和其他组件将被自动发现并注册为Spring应用上下文中的bean。你编写的所有@Controller类都会被这个注解所发现。

@EnableAutoConfiguration

这个注解启用了Spring Boot神奇的自动配置功能,它可以自动为你配置很多东西。

SpringBootApplication注解可选元素

以下是@SpringBootApplication注解中接受的参数。

Class<?>[] exclude - 排除特定的自动配置类,这样它们将永远不会被应用。
*String[] excludeName - 排除特定的自动配置类名称,这样它们将永远不会被应用。
Class<?>[] scanBasePackageClass - 一个类型安全的替代 scanBasePackages() 的方法,用于指定要扫描的注解组件的包。
String[] scanBasePackages- 用于扫描注解组件的基础包。

@SpringBootApplication 注解功能不是强制性的

到目前为止,我们看到@SpringBootApplicationannotation等同于使用@Configuration、@EnableAutoConfiguration和**@ComponentScan**,但这些功能都不是强制性的,你可以选择用它所启用的任何功能来替代这个单一的注解。例如,你可能不希望在你的应用程序中使用组件扫描。

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);
    }
}

相关文章