# 18. 使用@SpringBootApplication注解

很多Spring Boot开发者经常使用`@Configuration`，`@EnableAutoConfiguration`，`@ComponentScan`注解他们的main类，由于这些注解如此频繁地一块使用（特别是遵循以上[最佳实践](https://github.com/cwiki-us-spring-guides/Spring-Boot-Reference-Guide/tree/0047aa8098a650dde0c93f4d2e91754c83468c4b/III.%20Using%20Spring%20Boot/14.%20Structuring%20your%20code.md)的时候），Spring Boot就提供了一个方便的`@SpringBootApplication`注解作为代替。

`@SpringBootApplication`注解等价于以默认属性使用`@Configuration`，`@EnableAutoConfiguration`和`@ComponentScan`：

```java
package com.example.myproject;

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`属性的别名（aliases）。
