一、三层架构
经典的三层架构主要是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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117206.html