前言
在上篇文章我们已经粗略的讲到了项目分层的知识。有感兴趣的可参考
SpringBoot(9) — 项目分层(上)
这节让我们继续了解下SpringBoot
通常状态下的分层结构。
今天涉及知识点:
- 基本依赖
- 项目基本分层
- 各文件夹的详细讲解
3.1 entity文件夹
3.2 dao文件夹
3.3 service文件夹
3.4 controller文件夹 - 总结
一. 基本依赖
作为一个SpringBoot
项目,二话不说,先来波最基础的依赖吧。在你项目的pom.xml
中添加如下依赖:
<!-- 开启web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--开启测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
二.项目基本分层
基于上节的学习,然后又经过稍微深点的学习。现在一个基本的Springboot
项目基本要分为以下几个文件夹了:
- controller: 控制层,给外部提供
api
接口,此文件夹中的类习惯以xxxContriller
命名 - dao:面对数据库层,此文件夹中装面向数据操作的接口及接口的实现。
- entity:此文件夹中装映射数据表的实体类
- service:此文件夹装面向业务层的接口及接口的实现
三. 各文件夹的详细讲解
为了更方面大家理解,我将会把一个业务从底层数据库到上层api
的结构顺序进行讲解。
3.1 entity文件夹
entity
一般用于存储将数据表映射为java bean
的实体类。为了便于实体类的使用,我们一般会在该类头部注解@Data
,关于java bean
头部注解的基本使用,大家可参考Lombok的使用全解,当然,这里只是涉及了基本的注解使用,当涉及到其他第三方的表-->java bean
的映射,还可以有其他对应注解。
3.2 dao文件夹
dao
文件夹主要用于做面向数据库数据层面操作的的处理。dao
文件夹里面外层为数据操作接口类
,dao
文件夹里面还会创建一个impl
形式的文件夹,用于存放数据操作接口类
的具体实现,以下给出dao
文件夹示例:
----- dao 文件夹
----- dao_impl 文件夹
----- StudentDaoImpl 类
----- StudentDao 类
这里,StudentDao
便是操作数据库的接口类,然后dao_impl
文件夹中的StudentDaoImpl
类实现StudentDao
接口,然后处理具体的操作数据库的业务逻辑,如数据的增删改查。
而对于一个具体的XxxImpl
类,我们一般会在该类头部注解@Repository
。以StudentDaoImpl
为例,代码如下:
@Repository
public class StudentDaoImpl implements StudentDao {
@Override
public List<Student> getList() {
//具体数据库操作逻辑在此省略
//....
return null;
}
}
具体的XxxImpl
类由于涉及到数据库操作的具体实现,所以承载表--->实体类
的java bean
,即entity
文件夹中的实体类,大概率会出现在XxxImpl
类中,用以辅助完成XxxImpl
类的数据库操作流程。
3.3 service文件夹
service
文件夹结构和dao
文件夹结构类似,只不过dao
文件夹面向底层数据库的操作,而service
文件夹面向业务层操作。service
文件夹内外层放业务层操作接口类,然后service
文件夹中还有一个impl
形式的文件夹,里面存放业务层逻辑的具体实现类。而业务层逻辑的具体实现类通常以XxxServiceImpl
形式命名。下面贴出service
文件夹结构:
----- service 文件夹
----- service_impl 文件夹
----- StudentServiceImpl 类
----- StudentService 类
结合上图讲解,service
文件夹中含StudentService
类和service_impl
文件夹,其中StudentService
是业务层操作接口类,而service_impl
文件夹存放StudentService
接口类的具体实现类。service_impl
文件夹中的StudentServiceImpl
实现StudentService
接口,然后StudentServiceImpl
中用于处理具体的业务层逻辑。我们一般用@Service
注解来标注一个service
层的实现类。由于StudentServiceImpl
操作业务过程中会涉及到数据库操作,所以dao
文件夹中的接口类对象,会出现在StudentServiceImpl
中,下面给出StudentServiceImpl
代码作为示例:
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentDao mStudentDao;
@Override
public List<Student> getStudentInfos() {
return mStudentDao.getList();
}
}
3.4 controller文件夹
上面已经讲过,此文件夹中主要装api
接口,供外部调用。一个controller
类通常以XxxController
形式命名。一般以@RestController
注解在controller
类头部,表示这是一个controller
类,然后其内部api
接口的实现,基本用Service
层的接口来实现。下面给出一个controller
类 —— HelloController
作为示例:
@RestController
public class HelloController {
@Autowired
private StudentService mStudentService;
@RequestMapping("/mk")
public List<Student> getInfo() {
return mStudentService.getStudentInfos();
}
}
为了实现api
,service
层的接口对象经常会出现在controller
类中。controller
类还承载着生成api说明文档
的重责,此处不表,以后会讲到。
四. 总结
到此,SpringBoot
项目分层基本介绍完毕。我们可以很明显的发现,各层中都是通过接口建立联系和功能隔离的。
ok, 今天的内容就介绍到这里了,谢谢大家。
网友评论