微服务中基于Spring Boot的maven分布式项目框架的搭建(二)

简介: 微服务中基于Spring Boot的maven分布式项目框架的搭建

3. maven子工程microservice-common模块搭建


接下来我们搭建 maven 子工程中的公共模块 microservice-common,新建子模块,我们要选择 module,步骤为: File -> New -> Module,然后选择 maven,这和上面建立父工程一模一样,下一步的时候需要注意。


这里要注意的是,使用 IDEA 创建子模块的时候,不需要选择 “Add as module to” 这一项,默认是选择了我们刚刚创建的父工程microservice,我们在 Parent 项选择刚刚创建的microservice模块即可,然后给该子模块起名为microservice-common。创建好之后,我们来看一下该模块的 pom.xml 文件。


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
       <artifactId>microservice</artifactId>
       <groupId>com.itcodai</groupId>
       <version>1.0-SNAPSHOT</version>
       <relativePath>../microservice/pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>microservice-common</artifactId>
</project>

可以看到,在microservice-common模块中,有个 <parent> 标签,里面内容是父工程 microservice 的相关信息,包括依赖的路径也标出来了,这样microservice-common模块和microservice模块就建立了关联。子模块的 <packaging> 类型我们定义成 jar 即可。


<packaging>jar</packaging>

microservice-common模块我们主要定义一些公共的组件,本节课中,我们先定义一个订单实体类,因为这个实体在其他模块也要用到,所以我们定义在这个公共模块中,那么在该模块中,目前我们只需要引入 lombok 即可。如下。


<?xml version="1.0" encoding="UTF-8"?>
<project ...>
   <!-- 省略其他内容 -->
   <!-- 当前Module需要用到的依赖,按自己需求添加,版本号在父类已经定义了,这里不需要再次定义 -->
   <dependencies>
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
       </dependency>
   </dependencies>
</project>

lombok 依赖主要是用在实体类上,我们不用自己去定义构造方法,不用自己去生成 get 和 set 方法了,很方便。引入了依赖之后,我们去创建一个订单实体类。


@AllArgsConstructor
@NoArgsConstructor
@Data
public class TOrder {
   private Long id; // 主键id
   private String name; // 商品名称
   private Double price; // 商品价格
   private String dbSource; // 所存的数据库
}

解释一下该实体类上的几个注解。


* @AllArgsConstructor 注解:表示生成带有所有属性的构造方法。

* @NoArgsConstructor 注解:表示生成不带参数的构方法。

* @Data 注解:表示生成get和set方法

可以看出,使用 lombok 很方便,省去了很多繁琐的代码。到此为止,microservice-common 模块基本上就写完了,在实际项目中,可能还有别的实体类或者工具类等需要定义,视具体情况而定。


接下来我们需要把这个模块打包,让其他模块引用,这样其他模块就可以使用该模块中的公共组件了,就跟普通的 maven 依赖一样。如何打包呢?点开右边的 Maven Projects,我们可以看到目前项目中有两个模块,一个父工程和一个公共子工程模块,然后打开公共模块,执行 maven 中的 clean 和 install 命令即可。如下。


在下一部分,我们创建订单服务提供模块,在订单服务提供模块中,我们引入该公共模块


4. maven子工程microservice-order-provider模块搭建


接下来我们搭建 maven 子工程中的订单服务提供模块microservice-order-provider。新建子模块的方法和上面microservice-common模块一模一样,在命名的时候命名为microservice-order-provider即可。完成之后,来看一下该模块中的 pom 文件。


<?xml version="1.0" encoding="UTF-8"?>
<project ...>
   <parent>
       <artifactId>microservice</artifactId>
       <groupId>com.itcodai</groupId>
       <version>1.0-SNAPSHOT</version>
       <relativePath>../microservice/pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>microservice-order-provider</artifactId>
   <packaging>jar</packaging>
   <!-- 当前Module需要用到的依赖,按自己需求添加,版本号在父类已经定义了,这里不需要再次定义 -->
   <dependencies>
       <!-- 引入自己定义的 microservice-common 通用包,可以使用common模块中的TOrder类 -->
       <dependency>
           <groupId>com.itcodai</groupId>
           <artifactId>microservice-common</artifactId>
           <version>${project.version}</version>
       </dependency>
       <!-- spring boot 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>
       </dependency>
       <!-- mybatis 依赖 -->
       <dependency>
           <groupId>org.mybatis.spring.boot</groupId>
           <artifactId>mybatis-spring-boot-starter</artifactId>
       </dependency>
       <!-- mysql 依赖 -->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
       </dependency>
   </dependencies>
</project>

可以看出,引入上一节我们自定义的microservice-common模块和引入其他依赖没什么两样,版本我们使用 ${project.version} 来跟着项目版本走即可。其他依赖我们只需要引入即可,不需要定义版本号。


由于这是服务提供模块,我们需要在表中查询出订单信息,然后将信息通过接口提供给调用方,所以在该模块中,我们需要整合一下 mybatis,这里主要使用注解的方式,mybatis 的相关配置和代码可以在本文源码中查看。我们看一下 application.yml 配置文件中的部分信息。


# 服务端口号
server:
 port: 8001
spring:
 application:
   name: microservice-order # 对外暴露的服务名称

spring.application.name 是用来定义服务的名称,在后面的课程会详细的说明。TOrder实体对应的表以及数据见 order.sql 脚本文件。我们看一下该表中的数据。


在 OrderMapper 中写两个方法来查询表中信息。


public interface OrderMapper {
   @Select("select * from t_order where id = #{id}")
   TOrder findById(Long id);
   @Select("select * from t_order")
   List<TOrder> findAll();
}

我们在 Controller 层写两个接口来测试一下。


@RestController
@RequestMapping("/provider/order")
public class OrderProviderController {
   @Resource
   private OrderService orderService;
   @GetMapping("/get/{id}")
   public TOrder getOrder(@PathVariable Long id) {
       return orderService.findById(id);
   }
   @GetMapping("/get/list")
   public List<TOrder> getAll() {
       return orderService.findAll();
   }
}

在浏览器中输入localhost:8001/provider/order/get/list,如果能查出来两条记录,并以 json 格式输出到浏览器,如下,说明服务提供模块功能正常。


[{"id":1,"name":"跟武哥一起学 Spring Boot","price":39.99,"dbSource":"microservice01"},{"id":2,"name":"跟武哥一起学 Spring cloud","price":39.99,"dbSource":"microservice01"}]

相关文章
|
16天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
53 1
SpringBoot获取项目文件的绝对路径和相对路径
|
6天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
18 2
|
11天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
33 8
|
17天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
35 2
|
17天前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
67 1
|
18天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
40 2
|
18天前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
46 2
|
18天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
33 1
SpringBoot中maven项目打包时出现的问题
SpringBoot中maven项目打包时出现的问题
SpringBoot中maven项目打包时出现的问题
SpringBoot中maven项目打包时出现的问题
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project demo: Fatal error compiling
SpringBoot中maven项目打包时出现的问题

推荐镜像

更多