不要使用Java默认包
当一个类没有包声明时,会被默认放入”default package”中。而”default package”的使用是不被建议的,应当避免,因为它的使用可能会导致在使用@ComponentScan,@EntityScan或者@SpringBootApplication注解时发生特别的问题。
注:我们推荐你遵从java的包命名规范,使用反转域名命名包。如:com.example.project.
存放main应用的位置
通常我们推荐你把你的main应用类放于你的root包下,其他类之上。@EnableAutoConfiguration注解通常要放在你的Main类上,它隐式的定义了一个对某些项的基本搜索包。例如,你要写一个JPA应用,@EnableAutoConfiguration注解的类的包将会成为搜索@Entity注解的元素。
这样做另一个好处就是就你在此main类上使用@ComponentScan注解时就不需要为其指定basePackage,另外也可以直接在此main类上使用@SpringBootApplication注解。
下面是典型层级:
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
| +- CustomerController.java
需要在Application.java中声明main方法,如下:
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application{
public static void main(String[] args){
SpringApplication.run(Application.class,args);
}
}