微服务工程搭建过程中的注意点

2023-10-26

1、父工程pom.xml文件

在这里插入图片描述
1:父工程的maven坐标;
2:packaging使用pom;
原因:在Spring Cloud微服务工程中,通常会采用多模块的方式进行开发,父工程的pom文件中的packaging标签设置为pom,是因为父工程本身并不会生成任何可执行的jar或war包,它只是一个管理子模块的pom文件,用于管理子模块的依赖和版本号等信息。因此,将packaging标签设置为pom,表示该pom文件只是一个pom文件,不会生成任何可执行的包。这样,子模块就可以继承父工程的依赖和版本号等信息,方便管理和维护。
3:modules标签:用于聚合所有的子模块。
作用:在父工程的pom.xml文件中,modules标签用于指定所有子工程的名称和路径,它的作用是告诉Maven哪些子工程需要被编译、测试、打包和部署。当我们在父工程中执行Maven命令时,Maven会自动遍历所有子工程,并按照指定的顺序依次执行相应的操作。
4:管理各个依赖的版本,实现一处修改,处处修改。
5:用于管理各个依赖,当子模块继承之后,这个标签的作用就是锁定版本,且子模块的groupId和version都不用写。
dependencyManagement标签,该标签的作用是管理子模块的依赖版本号,即在父工程中声明的依赖版本号会被子模块继承,子模块可以不用显式地声明版本号,直接引用依赖即可。
这样做的好处是,可以统一管理依赖版本号,避免不同模块使用不同版本的依赖导致的冲突问题。同时,也可以减少子模块的pom文件中的冗余信息,提高代码的可读性和可维护性。
在这里插入图片描述
子工程中则只需要写artifactId,然后依赖版本可以继承父工程的,也可以自己显式指定。

2、mybatis相关配置

2.1 配置文件:

在这里插入图片描述
在 Spring Boot 工程中,使用 MyBatis-Plus 时,可以在 application.yml 或 application.properties 配置文件中配置 mapper-locations 属性,用于指定 MyBatis Mapper XML 文件的位置。

例如,mapper-locations: classpath:mapper/*.xml 表示 MyBatis-Plus 会在 classpath 下的 mapper 目录中查找所有的 Mapper XML 文件,并将它们加载到 MyBatis 中。

这样做的好处是,可以将 Mapper XML 文件与 Java 代码分离,使代码更加清晰易懂,同时也方便维护和修改。

2.2 Mapper接口的注解

在这里插入图片描述
@Mapper注解和@Repository注解,@Mapper注解是MyBatis提供的,用于标识Mapper接口的,而@Repository注解是Spring提供的,用于标识数据访问层的组件的。在SpringBoot中,@MapperScan注解会扫描指定包下的所有Mapper接口,并将其注册为Spring的Bean,而@Mapper注解则是标识Mapper接口的,用于让MyBatis扫描并生成Mapper接口的实现类。而@Repository注解则是标识数据访问层的组件的,用于让Spring扫描并注册为Bean。
因此,如果在Mapper接口上同时使用@Mapper注解和@Repository注解,可以让MyBatis和Spring都能够扫描并注册该Mapper接口。
一般建议直接使用@Mapper即可。

2.3 @Service

在Spring Boot工程中,通常建议将@Service注解写在实现类上,而不是接口上。这是因为@Service注解是用来标识一个类为Spring的服务层组件,而不是接口。当Spring扫描到@Service注解时,它会创建一个实现类的实例,并将其注册到Spring的应用程序上下文中。因此,将@Service注解放在实现类上更符合Spring的设计思想。

另外,如果将@Service注解放在接口上,可能会导致多个实现类被注册到Spring的应用程序上下文中,从而引起歧义。因此,建议将@Service注解放在实现类上,以确保Spring能够正确地识别和注册服务层组件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微服务工程搭建过程中的注意点 的相关文章

随机推荐

  • 求帮助安装mysql 出现红色感叹号

  • 【python】【django】cursor.fetchall()的结果是元组

    今天做测试 用django db 的connection来执行一个非常简单的查询语句 sql str select col 1 from table 1 where criteria 1 cursor connection cursor c
  • 混乱的代码是技术债吗

    翻译自 Uncle Bob 的 Blog A Mess is not a Technical Debt 主要是鲍勃大叔的观点 混乱的代码实现不是技术债 原文地址见超链接 The term Technical Debt was created
  • 成功解决安装tensorflow,安装进度1/4,爆红一大片且有很多File出现timed out

    之前安装几次 CPU tensorflow总是出现一大片红 自己发现其中一个原因是python版本和tensorflow不对应 tensorflow 2 0 0 得和python3 5 3 7对应 我之前的版本是3 8 5 会出现不兼容情况
  • 银行定期存款产品目标客户的确定——基于逻辑回归

    本篇文章将会介绍用Python分析银行定期存款产品目标客户的确定详细建模细节 业务框架分析以及模型的选择与评估分析参见上一篇文章 银行定期存款产品目标客户的确定 基于逻辑回归 建模前分析 1 导入各种模块并读取数据 2 数据预处理 维规约
  • STM32 keil中__IO得意思

    IO解释 STM32得库函数中 HAL和LL库都有 存在一个 IO得宏定义 define I volatile const lt defines read only permissions define O volatile lt defi
  • STM32配置时钟系统流程(固件库/外设标准库)

    前提 STM32F10x系列固件库 标准外设库 前言 固件库帮我们写好了 时钟系统 时钟树 的配置函数 该函数也不需要我们去调用 只要正确包含了STM32的启动文件 s文件 就行 s启动文件调用执行了时钟配置函数 先于main函数执行 s启
  • “钢铁侠”大战“机器人”!马斯克称「笼中格斗」将在 X 上直播,小扎应战:8 月 26 日如何?...

    由马斯克和扎克伯格领衔 随后引爆全网讨论的 约架 已过去快两个月 先是约定在拉斯维加斯来一场 笼中格斗 接着网友看热闹不嫌事大的做起了预告海报 最后由马斯克母亲出面叫停 当大家以为格斗一事要不了了之时 马斯克再次发声 要打 准备在 X 上直
  • 【Android】拾物App期末作业

    一 期末作业题目 校园失物 拾物APP 二 实施目的 通过本实训 使受训者可以深入理解Android相关技术 并将所学知识应用到实际的中等规模的程序设计中 同时 通过本实训 受训者可以拓展Android相关的知识 提升受训者的能力 三 实施
  • java中JDK JRE JVM的关系

    1 1 软件开发介绍 程序是为了模拟现实世界 解决显示问题而使用计算机语言编写的一系列有序的指令集合 软件 即一系列按照特定顺序组织的计算机数据和指令集合 有系统软件和应用软件之分 人机交互方式 图形化界面 GUI 命令行方式 CLI 常用
  • IO作业day5

    1 gt 使用两个线程完成两个文件的拷贝 主线程拷贝前一半内容 子线程拷贝后一半内容 并且主线程要阻塞回收子线程资源 2 gt 使用三个进程完成两个文件的拷贝 主线程拷贝前三分之一 子线程1拷贝中间三分之一 子线程2拷贝后三分之一 主线程要
  • 使用 Android 开发 MQTT 客户端

    MQTT 代表消息队列遥测传输 它是一种功能强大的消息传输协议 主要用于机器对机器 M2M 和物联网 IoT 通信上下文 MQTT 在这些情况下是首选 因为它易于实施 并且非常适合资源有限的设备 在本文中 我们将开发一个使用 MQTT 协议
  • c语言结构体简单试题,C语言6结构体练习题6

    第六章 结构体 1 下面对结构变量的叙述中错误的是 A 相同类型的结构变量间可以相互赋值 B 通过结构变量 可以任意引用它的成员 C 结构变量中某个成员与这个成员类型相同 的简单变量间可相互赋值 D 结构变量与简单变量间可以赋值 2 有枚举
  • 如何实现算法中的公平性

    机器学习的公平性问题近几年受到越来越多的关注 该领域出现了一些新的进展 机器学习训练在涉及到性别 种族等与人相关的敏感属性时 常常会由于统计性偏差 算法本身甚至是人为偏见而引入歧视性行为 由此 为消除差别影响 改进机器学习公平性 主要途径包
  • 在jsp中实现表格内设置滚动框

    当我们在页面中需要放置多条数据时 滚动框则将是一个十分不错的选择 在需要加入滚动框的表格内设置标签 table tbody style display block tbody table
  • 利用Python实现卷积神经网络的可视化

    对于深度学习这种端到端模型来说 如何说明和理解其中的训练过程是大多数研究者关注热点之一 这个问题对于那种高风险行业显得尤为重视 比如医疗 军事等 在深度学习中 这个问题被称作 黑匣子 Black Box 如果不能解释模型的工作过程 我们怎么
  • C#网络编程,多个客户端连接服务器端并发送消息

    最近学习进度到了C 网络编程 在学习这一章节的知识点 写了一些小demo 此次发表的为服务器监听端口 和多个客户端连接 获取多个客户端发来的消息 服务器端代码 using System Net using System Net Socket
  • SQL Server迭代求和

    drop table t geovindu create table t geovindu xid int IDENTITY 1 1 price money DebitCredit VARCHAR 2 adate datetime defa
  • Android学习之 Scroller的介绍与使用

    类概述 Android里Scroller类是为了实现View平滑滚动的一个Helper类 通常在自定义的View时使用 在View中定义一个私有成员mScroller new Scroller context 设置mScroller滚动的位
  • 微服务工程搭建过程中的注意点

    1 父工程pom xml文件 1 父工程的maven坐标 2 packaging使用pom 原因 在Spring Cloud微服务工程中 通常会采用多模块的方式进行开发 父工程的pom文件中的packaging标签设置为pom 是因为父工程