Spring Boot 不需要任何特定的代码布局工作, 但是, 下面这些最佳实践可能会有帮助.
当类不包含 package
声明时, 则被认为是”默认包”. 通常来讲是不鼓励用”默认包”的, 且应该避免这种用法. 在使用 @ComponentScan
, @EntityScan
或 @SpringBootApplication
时, 可能会引起 Spring Boot 应用特有的问题, 因为 jar 内的所有类都会被读取.
推荐遵循下面 Java 推荐的包命名约定,使用反向域名(例如, com.example.project).
通常推荐将主应用类放置在高于其他类的根 package
内. @EnableAutoConfiguration
经常被放在主类上, 它隐式地定义了某些项的基本”搜索包”. 举例来说, 如果你写了一个 JPA 的应用, 标记了 @EnableAutoConfiguration
的类所在的包会被用于扫描 @Entity
项.
使用根 package
同样允许使用不指定任何 basePackage
属性的 @ComponentScan
标记. 如果主类在根 package
, 可以使用 @SpringBootApplication
.
下面是一个典型的布局:
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
Application.java
文件会声明主方法, 伴随着基本的 @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);
}
}