基于springboot微服务项目的父工程、common模块的构建

概述

以微服务项目的方式,对软件体系进行一个简单的探究,简略说明,为什么这样做,软件中这样做的原因是什么,结合一定的案例给出。

父工程

对于父工程模块中重要的是其中的pom文件,在微服务体系下,不能够过多,比如在子模块中会自己引入的,就不要在父工程的pom文件中引入,避免父工程承担过多的责任,更多的引入权应该交给子模块,让子模块更能自治。

父工程pom文件

在pom文件中便是简单的引入一些必须的依赖,过多、繁杂的依赖并没有引入。项目是基于springboot的,而springboot一些基础jar包是在一个叫parent标签的依赖中配置的。所以,springboot的parent是必须的。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/>
</parent>

    <dependencies>
        <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>
    </dependencies>

子工程pom文件

在子工程中会引入common模块,及工程所需要的依赖。一般来说,必须的依赖有,mysql连接驱动jar包,dao层所用框架的jar包,及common包,这里使用的是mysql、mybatis-plus,所以,引入了mysql驱动包,mybatis-plus相关jar包。要是不知道mybatis-plus的需要什么jar包,可以到mybats-plus官网上自行查找。

建议的话使用官网上的jar依赖,有时候可能会导致,org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 问题

对于子工程模块的构建,一般生成完Module后,一般要做的事是引入pom文件、配置application.yml、使用easycode等自动生成代码、在启动类中@MapperScan(“com.tensquare.recruit.dao”)配置接口扫描。

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--简化代码的工具包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--mybatis-plus的springboot支持-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <artifactId>tensquare_common</artifactId>
            <groupId>com.itctest</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

common模块

对于common模块,也是公共模块,和父工程有着较多的相似性,其较大的作用在于为其他模块提供 共用 类,但不牵扯到其他模块的具体业务逻辑。如果在一开始模块划分的时候并未划分出common模块,那么可以将全部模块中共用的类抽取出来,放入到common模块中,然后在各个模块引入common模块jar包。完成对项目工程的改造。

在前后端分离的微服务中,公共模块,大多承担的角色是,根据前端所需返回的数据类型,定义出一个或几个共同的类,满足前端类型所需,那么在controller层对数据进行返回的时候,根据所需返回相应类型即可。

通常来说,前端需要返回的类型有状态码code–用于标识状态成功、失败等状态,提示信息message–用于说明状态码怎样,比如添加成功、查询成功等,以及返回数据data,需要返回的数据。

那么要怎么选择数据的具体类型呐?一般来说,code可以选用数据Integer,message选String,而data因为要保存各种对象的数据,为此可以考虑泛型或者所有类的父类Object,使用泛型的时候记得在类上加声明。

在创建类的时候可对code、message提供一个构造函数,对code、message、data提供一个构造函数,方便返回调用。

目录结构

在这里插入图片描述

说明:
pageResult:用于返回分页对象
Result:通用分页对象
StatusCode:定义状态码,可对项目代码进行解耦

后端代码

public class Result {

    private boolean flag;
    private Integer code;
    private String message;
    private Object data;

    public Result() {
    }

    //增删改
    public Result(boolean flag, Integer code, String message) {
        this.flag = flag;
        this.code = code;
        this.message = message;
    }

    //
    public Result(boolean flag, Integer code, String message, Object data) {
        this.flag = flag;
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public boolean isFlag() {
        return flag;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public Object getData() {
        return data;
    }
}

前端的可能代码

没有data的Result对象

{
  "code": 0,
  "flag": true,
  "message": "string"
}

有data的Result对象

{
  "code": 0,
  "flag": true,
  "message": "string",
  "data": [
    {
      "id": "string",
      "labelname": "string",
      "state": "string",
      "count": 0,
      "recommend": "string"
    }
  ]
}

有分页的Result对象,通常可以PageResult可以配合Result对象使用

{
  "code": 0,
  "flag": true,
  "message": "string",
  "data": {
    "total": 0,
    "rows": [
      {
        "id": "string",
        "labelname": "string",
        "state": "string",
        "count": 0,
        "recommend": "string"
      }
    ]
  }
}

ps:以上代码均非原创,仅供学习使用,如有侵权请联系删除

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot是一个用于快速构建独立的、基于Spring框架的应用程序的开发框架。它采用注解方式启动,并内置了一个HTTP服务器(默认是Tomcat),因此不需要额外配置Tomcat。 而Spring Cloud是基于Spring Boot实现的云应用开发工具,它是整个Spring Cloud微服务架构的服务基础。Spring BootSpring Cloud提供了必要的支持和依赖。 搭建一个Spring Boot微服务项目可以按照以下步骤进行: 1. 在IDE(如IDEA)中创建一个新的Spring Boot项目。 2. 使用Spring Boot注解@SpringBootApplication标注主程序类,表示这是一个Spring Boot应用程序。 3. 在主程序类中编写启动应用的main方法,调用SpringApplication.run方法来启动应用。 4. 根据需要,可以添加其他的依赖和配置来构建一个微服务。 总之,Spring Boot是用于快速构建独立的Spring应用程序的开发框架,而Spring Cloud是基于Spring Boot实现的云应用开发工具。通过使用Spring BootSpring Cloud,可以便捷地构建微服务项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [spring boot微服务项目搭建](https://blog.csdn.net/weixin_47116552/article/details/125533579)[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_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【微服务 从0开始 】Spring Cloud 简单搭建一个微服务项目](https://blog.csdn.net/weixin_50843918/article/details/124257517)[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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值