Clark To Do The blog of Clark

Spring Boot 推荐项目结构

结构化代码

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);
    }

}
comments powered by Disqus