Spring Boot 不需要任何特定的代码布局即可工作。 但是,有一些最佳实践会有所帮助。Spring中文文档

如果您希望强制执行基于域的结构,请查看 Spring Modulith
如果您希望强制执行基于域的结构,请查看 Spring Modulith

使用“默认”包

当一个类不包含声明时,它被认为是在“默认包”中。 通常不鼓励使用“默认包”,应避免使用。 对于使用 、 、 或 注解的 Spring Boot 应用程序,它可能会引起特定问题,因为每个 jar 中的每个类都会被读取。package@ComponentScan@ConfigurationPropertiesScan@EntityScan@SpringBootApplicationSpring中文文档

我们建议您遵循 Java 推荐的软件包命名约定,并使用反向域名(例如,)。com.example.project
我们建议您遵循 Java 推荐的软件包命名约定,并使用反向域名(例如,)。com.example.project

查找主应用程序类

我们通常建议您将主应用程序类放在根包中,而不是其他类。 @SpringBootApplication注释通常放在主类上,它隐式地为某些项目定义了一个基本的“搜索包”。 例如,如果要编写 JPA 应用程序,则使用带注释的类的包来搜索项目。 使用根包还允许仅对项目应用组件扫描。@SpringBootApplication@EntitySpring中文文档

如果您不想使用 ,它导入的 和 注释定义了该行为,因此您也可以改用这些行为。@SpringBootApplication@EnableAutoConfiguration@ComponentScan

以下列表显示了一个典型的布局:Spring中文文档

com
 +- example
     +- myapplication
         +- MyApplication.java
         |
         +- customer
         |   +- Customer.java
         |   +- CustomerController.java
         |   +- CustomerService.java
         |   +- CustomerRepository.java
         |
         +- order
             +- Order.java
             +- OrderController.java
             +- OrderService.java
             +- OrderRepository.java

该文件将声明该方法以及基本方法,如下所示:MyApplication.javamain@SpringBootApplicationSpring中文文档

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {

	public static void main(String[] args) {
		SpringApplication.run(MyApplication.class, args);
	}

}
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

@SpringBootApplication
class MyApplication

fun main(args: Array<String>) {
	runApplication<MyApplication>(*args)
}
如果您不想使用 ,它导入的 和 注释定义了该行为,因此您也可以改用这些行为。@SpringBootApplication@EnableAutoConfiguration@ComponentScan