软件研究之Ruoyi微服务版
1.前言
最近在调研后端管理框架,找到了若依后端管理框架,我就尝试着安装学习了。我这里主要就是修改了微服务版本,至于微服务版本和前后端分离版本,到底各自有什么优势,这个应该是见仁见智吧。
我觉得微服务一个好处就是不同的应用之间互相不影响,可以不同的数据库配置不同的应用,这个比较方便,但是部署起来比较的麻烦,像前后端分离的版本,有点像单体应用,当我要进行不同的服务创建的时候,可能就比较麻烦。关于我目前遇到的项目,数据库分为了多个数据库,但是每一个数据大部分的字段相同,偶尔有一部分的数据不兼容,并且已经是成熟的sql server数据库了,已经运行很多年了,要是让老板换技术和数据库,估计比登天还难,所以我只能选择使用微服务的方法,兼容原有的客户端应用。
1.【RuoYi-Vue】RuoYi-Vue新增子模块 对于前后端分离版本新建模块,和新建前端页面,写的非常的详细,还配图了,对于理解和微服务版本的区别倒是有点理解了。
2.若依前后端分离框架学习-4:创建模块 这是前后端分离版本的新建模,这个比上面的就是缺少了一些细节部分。
3.若依ruoyi前后端分离版服务器部署 这里主要是打包部署环节,部署了前端和后端。
4.若依管理系统部署并实现持续发布 这个是前后端分离版本的部署,还讲了使用gitlab的ci/cd工具实现持续集成。
1.前端部署
1.前往Gitee下载页面(https://gitee.com/y_project/RuoYi-Cloud (opens new window))下载解压到工作目录
2、导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择工作目录,然后点击 Finish 按钮,即可成功导入。
Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定)
3、创建数据库ry-cloud并导入数据脚本ry_2021xxxx.sql(必须),quartz.sql(可选)。在Dbeaver中创建数据库,右键数据库名,选择工具->执行脚本,将数据库导入进去。
4、创建数据库ry-config并导入数据脚本ry_config_2021xxxx.sql(必须)
5、配置nacos持久化,修改conf/application.properties文件,增加支持mysql数据源配置
1.环境部署
2.后端部署
1.若依前后端分离版手把手教你本地搭建环境并运行项目
1.数据权限
1.若依微服务之权限管理 这是一个还没有毕业的学生写的,我已经工作好多年了,都没有这个水平,真是自愧不如啊,白活了这么多年了。
2.若依-数据权限管理-DataScope 说明:@DataScope(deptAlias = “d”, userAlias = “u”) d:表示拼接sql是表别名 sys_dept d;u:表示拼接sql是表别名 sys_user u
3.若依管理系统RuoYi-Vue(二):权限系统设计详解 这里除了讲解了菜单权限,还有数据权限,还增加了一个空的页面,并且赋予不同用操作这个页面的权限的示例。
2.用户注册
1.若依框架注册功能 在前端的login页面开启了register功能
问题
(1) 拒绝连接: /127.0.0.1:9848
这个问题可能是因为使用的nacos版本不对导致的,ruoyi-cloud >= 3.0.0需要下载nacos >= 2.x.x版本。我查看了自己的nacos版本,果然只有 1.4.3 版本。
1.使用docker安装Nacos,远程连接nacos报错,please check server x.x.x.x ,port 9848 is availablec
2.Connection refused: /127.0.0.1:9848
(2) 数据库中的配置更新后系统无法加载
需要重新启动nacos,才能重新从nacos加载配置
3.后端模块
1.新建模块
2.复制pom.xml文件
3.创建包及启动类
4.创建配置文件
将system的yml配置文件复制到新建模块一份,并修改该模块的端口号
5.创建nacos配置文件
登录Nacos配置中心,找到配置列表,选择ruoyi-system-dev.yml,点击克隆,并更改名称,进行克隆。
1.若依微服务版怎样新增业务子模块并使用代码生成实现对表的增删改查 在ruoyi-moudle虾创建了一个后端模块
问题
(1) A circular @Import has been detected: Illegal attempt by @Configuration class ‘SwaggerAutoConfiguration’ to import class ‘SwaggerAutoConfiguration’ as ‘SwaggerAutoConfiguration’ is already present in the current import stack
我创建了一个自定义的模块,启动时出现了这个错误。
【解决】
这个问题,主要就是要在启动类上增加 @EnableCustomSwagger2 这个注解。
1 |
|
@EnableRyFeignClients 这个注解中比较有用的类,就是 RemoteLogService,通过注入这个Bean,可以实现对操作进行记录的方法
1 |
|
1.将springboot项目集成到springcloud项目里面,出现了循环导入注解的错误,想请教大家如何解决? 没什么用
2.Spring高级之注解@Import注解、ImportSelector、ImportBeanDefinitionRegistrar详解(超详细) @Import注解的使用
(2) duplicated in the reactor
在进行模块打包的时候,出现了这个问题。
【解决】
这个时候主要就是要查看父pom.xml中是否包含了多个子模块,子模块中又引入了父pom.xml。
(3) 对象名 ‘DUAL’ 无效,relation “dual” does not exist
这是在使用sql server 数据库的时候,没有DUAL这个对象,只需要修改配置文件为 druid.validationQuery= SELECT 1,去掉后面的FROM DUAL就好了。
1.com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 ‘DUAL‘ 无效 | Druid双数据源MySQL+SQL server 这个可以用
2.项目启动报错org.postgresql.util.PSQLException: ERROR: relation “dual” does not exist 删除FROM DUAL 直接将参数改为select 1
3.Postgres insert record with Sequence generates error - org.postgresql.util.PSQLException: ERROR: relation “dual” does not exist
(4) dynamic-datasource can not find primary datasource
如果是引用了ruoyi-common-datasource那么就根据ruoyi-system去配置数据源,如果没有,就按照常规的springboot去配置数据源,参考ruoyi-gen去配置数据源。不过出现这种情况一般是没有读取到nacos数据源导致的错误。
还有一点要注意的就是,如果在模块的相互依赖中存在这个ruoyi-common-datasource也不行
1.新建子服务启动成功后报错dynamic-datasource can not find primary datasource
2.mybatis-plus异常:dynamic-datasource can not find primary datasource 异常原因是没有设置默认数据源,在类上没有使用@DS指定数据源时,默认会加载master数据源,但是在配置中没有使用master配置
(3) can not get cluster name in registry config ‘service.vgroupMapping.default_tx_group’, please make sure registry config correct
在集成了若依管理框架之后,总是出现这个问题,我其实对这个seata不太熟的,不知道在哪里集成进来的。
1.can not get cluster name in registry config ‘service.vgroupMapping.xx‘, please make sure registry
4.前端页面
1.创建目录
根据需要,创建自己的一级和二级目录。
2.编写组件
3.创建菜单
创建需要的菜单,并指定组件路径