SpringBoot – 结构规范

导读:本篇文章讲解 SpringBoot – 结构规范,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、三层架构

经典的三层架构主要是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对象的约定

SpringBoot - 结构规范

  • Request和Response对象的约定

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

三、项目组成

SpringBoot - 结构规范

四、相关项目&实战

SpringBoot - 结构规范

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117206.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!