07.结构化代码
Spring Boot 不需要任何特定的代码布局就可以工作。 然而,有一些最佳实践可以帮助你。
使用默认package
当一个类不包含 package
声明时,它被认为是在“默认包”中。 通常不鼓励使用“默认包” ,并且应该避免使用。 对于使用 @ComponentScan
、@configurationPropertiesScan
、@EntityScan
或@SpringBootApplication
注解的 Spring Boot 应用程序,它可能会导致特殊的问题,因为每个 jar 的每个类都会被读取。
建议您遵循 Java 推荐的包命名约定,并使用反向域名,例如
com.example.project
定位主程序类
我们通常建议您将主程序类定位在根包中,位于其他类之上。 @SpringBootApplication
注解通常放在您的主类上,它隐式地为某些项定义一个基本的“搜索包”。 例如,如果您正在编写一个 JPA 应用程序,可以使用 @SpringBootApplication
注解类的包来搜索@Entity
项。 使用根包还允许组件扫描只应用于项目。
如果你不想使用
@SpringBootApplication
,@EnableAutoConfiguration
和@ComponentScan
注解提供了相同和功能,可以使用这两个注解来代替@SpringBootApplication
下面显示了一个典型的布局:
1 | com |
Application.java
文件声明了一个 main
方法和 @SpringBootApplication
,如下所示:
1 | package com.example.myapplication; |
总结
全篇的意思就是:在SpringBoot应用中不要使用无package声明的类,不然可能会导致SpringBoot应用启动时无法扫描到这些类;SpringBoot的主类要放在最外层的包目录下,其他模块在该包下再创建子包。