原文链接:http://itbus.tech/detail.html?id=8720
Spring Boot没有对代码结构有任何要求,但是,还是有一些有用的最佳实践。
使用 “default” 包
如果一个class不包含package
的申明(也就是这个class不在任何包下),这个包就是在默认包下。任何使用默认包都是不被鼓励的,甚至是应该避免的。在Spring Boot下如果使用了@ComponentScan
,@EntityScan
,@SpringBootApplication
,这种默认包可能会产生问题,因为所有包下的,所有class都会被扫描。
我们推荐你按照Java推荐的包命名约定,使用域名反转的方式来命名包(com.project.project)。
安置 main 类
一般来说,我们推荐吧main application放在你的包的根目录下。@EnableAutoConfiguration
注解一般放在你的main class上,这个注解含蓄的指出了搜索包的根路径,来搜索某些类。例如,如果你写了一个JPA应用,@EnableAutoConfiguration
修饰的类将会用来搜索所有被@Entity
修饰的类。
如果把main class放在包的根路径中,那么在使用@ComponentScan
时不需要指定basePackage
。如果把main class放在包的根路径中,可以直接使用@SpringBootApplication
注解。
一般来说,包结构是这样的:
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
Application.java
文件需要申明一个main
方法,需要加上@Configuration
。
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);
}
}
译者注:可以使用@SpringBootApplication
,这个等同于同时申明@Configuration
,@EnableAutoConfiguration
,@ComponentScan
这三个注解。