美文网首页
SpringBoot(10) — 项目分层(下)

SpringBoot(10) — 项目分层(下)

作者: 奔跑的佩恩 | 来源:发表于2021-07-20 22:56 被阅读0次

    前言

    在上篇文章我们已经粗略的讲到了项目分层的知识。有感兴趣的可参考
    SpringBoot(9) — 项目分层(上)
    这节让我们继续了解下SpringBoot通常状态下的分层结构。

    今天涉及知识点:

    1. 基本依赖
    2. 项目基本分层
    3. 各文件夹的详细讲解
      3.1 entity文件夹
      3.2 dao文件夹
      3.3 service文件夹
      3.4 controller文件夹
    4. 总结

    一. 基本依赖

    作为一个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, 今天的内容就介绍到这里了,谢谢大家。

    相关文章

      网友评论

          本文标题:SpringBoot(10) — 项目分层(下)

          本文链接:https://www.haomeiwen.com/subject/zehrmltx.html