# 14\. 構建代碼
Spring Boot不需要任何特定的代碼組織結構,但是有一些最佳實踐可以幫助您。
### 14.1 不要使用“default”包
當類不包括包聲明時,它被認為是在“默認包”中。 通常不鼓勵使用“默認包”,并應該避免使用。 對于使用@ComponentScan,@EntityScan或@SpringBootApplication注解的Spring Boot應用程序,可能會有一些特殊的問題,因為每個jar的每個類都將被讀取。
> 我們建議您遵循Java推薦的軟件包命名約定,并使用反向域名(例如,com.example.project)。
### [](file:///C:/Users/geekidentity/AppData/Local/Youdao/YNote/markdown/index.html#142-查找主應用程序類)14.2 查找主應用程序類
我們通常建議您將應用程序主類放到其他類之上的根包(root package)中。 @EnableAutoConfiguration注解通常放置在您的主類上,它隱式定義了某些項目的基本“搜索包”。 例如,如果您正在編寫JPA應用程序,則@EnableAutoConfiguration注解類的包將用于搜索@Entity項。
使用根包(root package)還可以使用@ComponentScan注釋,而不需要指定basePackage屬性。 如果您的主類在根包中,也可以使用@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);
}
}
```
- Part I. Spring Boot 文檔
- Part II. 入門指南
- 8. Spring Boot 介紹
- 9. 系統要求
- 10. 安裝 Spring Boot
- 11. 開發您的第一個Spring Boot應用程序
- 12. 接下來應該讀什么
- Part III. 使用 Spring Boot
- 13. 構建系統
- 14. 構建代碼
- 15. 配置類
- 16. 自動配置
- 17. Spring Beans 和 依賴注入
- 18. 使用@SpringBootApplication注解
- 19. 運行你的應用程序
- 20. 開發工具
- 21. 包裝您的應用程序到生產環境
- 22. 接下來應該讀什么
- Part IV. Spring Boot 功能
- 23. SpringApplication
- 24. 外部配置
- 25. 配置文件(Profiles)
- 26. 日志
- 27. 開發Web應用程序
- 28. Security
- 29. 使用SQL數據庫