14.2. 放置应用的main类

通常建议将应用的main类放到其他类所在包的顶层(root package),并将@EnableAutoConfiguration注解到你的main类上,这样就隐式地定义了一个基础的包搜索路径(search package),以搜索某些特定的注解实体(比如@Service@Component等)
。例如,如果你正在编写一个JPA应用,Spring将搜索@EnableAutoConfiguration注解的类所在包下的@Entity实体。

采用root package方式,你就可以使用@ComponentScan注解而不需要指定basePackage属性,也可以使用@SpringBootApplication注解,只要将main类放到root package中。

下面是一个典型的结构:

  1. com
  2. +- example
  3. +- myproject
  4. +- Application.java
  5. |
  6. +- domain
  7. | +- Customer.java
  8. | +- CustomerRepository.java
  9. |
  10. +- service
  11. | +- CustomerService.java
  12. |
  13. +- web
  14. +- CustomerController.java

Application.java将声明main方法,还有基本的@Configuration

  1. package com.example.myproject;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.context.annotation.ComponentScan;
  5. import org.springframework.context.annotation.Configuration;
  6. @Configuration
  7. @EnableAutoConfiguration
  8. @ComponentScan
  9. public class Application {
  10. public static void main(String[] args) {
  11. SpringApplication.run(Application.class, args);
  12. }
  13. }