SpringBoot - 结构规范

一、三层架构

经典的三层架构主要是Dao/Service/Controller层这三层. 相应的, 对应这3层的对象为DO/BO/VO对象.

  • PO: Persistant Object. 持久层对象. 类似数据库内的一条记录.
  • DO: Domain Object. 领域对象. 我们在三层架构中使用的DO其实是PO.
  • BO: Business Object. 业务对象.
  • VO: Value Object. 表现对象. 主要用于与前端直接的交互与信息传递.
  • DTO: Data Transfer Object. 通常是在OpenApi. 即此项目与其他外界项目交互时使用的对象

PS: 最后插一句. 其实, 如果你的项目功能足够简单. 项目比较小的话, 其实没有必要分的那么细致. 掌握设计的“度”, 非常重要.

二、阿里开发手册的部分

  • Domain对象的约定

  • Request和Response对象的约定

即复杂对象的交互必须封装成Request 和 Response与前端进行交互。

三、项目组成

四、相关项目&实战

Application

@SpringBootApplication
public class Application {

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

}

UserDaoImpl

/**
* UserDao 层.
* Author: sean
* Date:May 24, 202112:41:46 AM
*/
@Configuration
public class UserDaoImpl implements IUserDao{

    public UserDO getByName(String name) {
        return new UserDO();
    }
}

UserServiceImpl

@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserDao userDao;

    public UserBO getByName(String name) {
        UserDO userDO = userDao.getByName("");
        // transfer  userDO --> userBO
        return new UserBO();
    }
}

UserController

/**
* Base Controller.
* Author: sean
* Date:May 24, 202112:42:24 AM
*/

@RestController(value="/user")
public class UserController {

    @Autowired
    private IUserService userService;
    
        @RequestMapping(path = "getByName", method = RequestMethod.GET)
    public CommonResponse<UserVO> getByName(String name){
        UserBO userBO = userService.getByName("");
        // transfet userBO --> userVO --> CommonResponse
        UserVO userVO = new UserVO();
        return new CommonResponse(userVO).success();
    }
}

CommonResponse

/**
* 通用返回值封装.
* 
* Author: sean
* Date:May 24, 202112:35:18 AM
* @param <T>
*/
@Data
public class CommonResponse<T> {
    
    String description;
    
    String code;
    
    T data;

    public CommonResponse(T data){
        this.data = data;
    }

    public CommonResponse<T> success(){
        this.code = "200";
        this.description = "success";
        return this;
    }

    public CommonResponse<T> error(){
        this.code = "400";
        this.description = "error";
        return this;
    }
}

完整项目. 欢迎访问github:  springboot-sophle/springboot-standard at main · SeanYanxml/springboot-sophle · GitHub

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot项目的结构命名规范如下所示: 1. 最开始生成的目录: - .idea:存放项目的配置信息。 - .mvn:存放与mvnw相关文件,用于统一Maven版本管理。 - src:存放项目的源码和资源文件。 - target:存放项目构建后的文件和目录、jar包、war包、编译的class文件。 - .gitignore:git忽略规则。 - blog.iml:IntelliJ IDEA的工程配置文件。 - HELP.md:帮助文档。 - mvnw:与Linux执行mvnw命令有关。 - mvnw.cmd:与Windows执行mvnw命令有关。 - pom.xml:项目对象模型(核心重要)。 2. 标准开发级目录: - src/main:主目录。 - src/test:测试目录。 3. src/main目录下的子目录: - src/main/java:存放源代码文件。 - src/main/resources:存放各类静态资源文件、配置文件、页面文件等。 - src/main/resources/static:用于存放各类静态资源(css,js等)。 - src/main/resources/templates:用于存放模板文件(mappers等)。 - src/main/resources/application.properties:用于存放程序的各种依赖模块的配置信息。 4. src/test目录下的子目录: - src/test/java:存放测试代码文件。 5. MVC三层结构的文件夹描述: - dao(mapper):Dao层,负责与数据库打交道,具体到对某个表、某个实体的增删改查。 - service:服务层,封装Dao层的操作,使一个方法对外表现为实现一种功能。 - controller:业务控制层,负责接收数据和请求,并且调用Service层实现业务逻辑。 - service/Impl:服务层实现,service装的是接口,Impl装的是实现接口。 6. 必要层: - pojo:实体层。 7. 重要层: - utils:工具类。 - constant:常量接口类。 - config:配置信息类。 - vo:数据传输类。 综上所述,SpringBoot项目的结构命名规范包括最开始生成的目录、标准开发级目录、MVC三层结构以及其他必要层和重要层的命名规范。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [springboot项目结构命名规范](https://blog.csdn.net/qq_51184516/article/details/126681931)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值