- swagger【个人笔记】
撰卢
笔记java
文章目录swagger导入mave坐标在配置类(WebMvcConfiguration)中加入knife4j相关配置设置静态资源映射,主要是让拦截器放行swagger常用注解@Api(tags="\[描述这个类的作用]")@ApiModel(description="\[描述这个类的作用]")@ApiModelProPerty("描述这个类的作用")@ApiOperation("\[描述方法的作用
- spring boot 之 整合 knife4j 在线接口文档
我叫晨曦啊
springbootspringboot后端java
pom依赖com.github.xiaoyminknife4j-spring-boot-starter3.0.3application.ymlknife4j:#开启增强功能enable:true#是否屏蔽生产环境production:true#设置是否开启账密验证以及账密,改为true后访问页面时需输入账密basic:enable:falseusername:adminpassword:admin
- 微服务项目网关集成swagger
bbober
后端-微服务-框架微服务架构云原生
微服务项目网关中集成swagger并使用knife4j进行增强前言本文场景为:使用SpringCloud框架,MyBatisPlus持久层框架;注册中心:nacos,配置中心:nacos;主要模块有:业务模块、网关模块、common模块(共享);网关路由从配置中心动态拉取;其他情况动态调整。spring-boot-start版本:2.7.12(3版本以上只支持OpenApi3规范,差距较大)使用O
- 3、微服务整合Swagger3.0 - 网关Gateway聚合接口
cch记录JAVA
系统接口文档Swaggerknife4j微服务gateway架构springbootjava后端
1、SpringBoot快速整合Swagger3.02、微服务整合Swagger3.0-抽取为公共模块3、微服务整合Swagger3.0-网关Gateway聚合接口4、微服务整合Swagger3.0-使用方法5、微服务Swagger3.0升级为Knife4j一、实现的效果访问http://{ip}:{port}/swagger-ui/index.htmlspringfox-swagger提供的分组
- 【前后端联调】MethodArgumentNotValidException
宣布无人罪
前后端联调javatomcatspringbootspring
【前后端联调】MethodArgumentNotValidException01问题描述前后端联调,前端传了一个参数是null,但是这个参数设置了校验不能为null,所以报了这个错误handleMethodArgumentNotValidException,132]-Validationfailedforargument[0]inpubliccom.ruoyi.common.core.domain
- 数据报表-自定义公式运算
kk star
javajepBI数据报表
本专栏用于解析自己开源的项目代码,作为复盘和学习使用。欢迎大家一起交流本样例说明源码开源在:ruoyi-reoprtgitee仓库ruoyi-reportgithub仓库欢迎大家到到项目中多给点star支持,对项目有建议或者有想要了解的欢迎一起讨论需求背景在报表数据处理中,用户先使用数据库中的字段向数据源读取到了需要的数据,或者使用字典将数据进行转化。对于一些特殊的字段,希望能进行一定的运算后,将
- 报表系统-连接数据库操作
kk star
javaBI报表数据库
本专栏用于解析自己开源的项目代码,作为复盘和学习使用。欢迎大家一起交流本样例说明源码开源在:ruoyi-reoprtgitee仓库ruoyi-reportgithub仓库欢迎大家到到项目中多给点star支持,对项目有建议或者有想要了解的欢迎一起讨论连接数据库这一模块整体参考的是AJ-report的模块:去掉了目前不支持的数据库格式,仅保留了mysql和sqlserverhttps://gitee.
- RuoYi、Vue CLI 和 uni-app 结合构建跨端全家桶方案
速易达网络
vue.jsjavascript低代码
将RuoYi、VueCLI和uni-app结合构建跨端全家桶方案,可以实现一套代码管理后台系统(PC)和移动端应用(H5/小程序/App)。以下是整合思路和关键步骤:技术栈分工RuoYi:后端框架(SpringBoot+MyBatis)VueCLI:PC管理后台前端(基于Vue2+ElementUI)uni-app:移动端应用(一套代码编译到H5/小程序/App)整体架构关键实现步骤1.后端统一A
- UniApp完美对接RuoYi框架开发企业级应用
速易达网络
uni-app
UniApp完美对接RuoYi框架的完整方案及可开发系统类型,结合企业级实践与开源项目经验整理而成,涵盖技术对接、系统设计及实战案例。一、UniApp与RuoYi对接全流程1.后端配置(RuoYi-Vue/RuoYi-Cloud)跨域支持在网关层添加跨域配置类,允许UniApp请求:@ConfigurationpublicclassCorsConfig{@BeanpublicWebFilterco
- 基于 Vue + RuoYi 架构设计的商城Web/小程序实训课程
速易达网络
springbootuni-appvue.js
以下是基于Vue+RuoYi架构设计的商城Web/小程序实训课程方案,结合企业级开发需求与教学实践,涵盖全栈技术栈与实战模块:一、课程概述目标:通过Vue前端+RuoYi后端(SpringBoot)开发企业级电商系统,实现多终端(Web/H5/小程序)适配,覆盖从架构设计到部署上线的全流程。周期:8周(建议每日3小时)适合人群:具备基础Java/Vue知识的开发者,熟悉HTML/CSS/JavaS
- 手搓钉钉小程序登陆(借助RuoYi框架)
脑袋大大的
钉钉生态创业者专栏钉钉小程序
文章讲述如何在开发钉钉小程序的时候,实现免登陆功能,本系统基于RuoYiSpringBoot3版本测试,有些类找不到可以去RuoYi官网查看。前言钉钉小程序开发时,需要实现免登陆功能,即用户在钉钉小程序无需账号密码登录,后续进入小程序,也不需要再次登录。主要流程在钉钉小程序端获取authCode将authCode发送到服务器后端服务器获取AccessToken,通过authCode获取获取user
- ruoyi-实现表格按照属性排序
javachen__
vue.jsjavascriptelementuiruoyi
......{{parseTime(scope.row.loginTime)}}/**排序触发事件*/handleSortChange(column,prop,order){this.queryParams.orderByColumn=column.prop;this.queryParams.isAsc=column.order;this.getList();},
- 若依微服务版增加服务sql输出
阳光正好2024
vue相关开发若依框架使用java数据库开发语言
在项目中需要输出sql进行调试,在nacos的配置中的根下添加下面的配置:logging:level:com.ruoyi:debugorg.springframework:warn#添加配置com.ying:debug
- knife4j v4.0.0版本注解变化
ruan114514
javaknife4jspringboot
需要注意一点的是升级为4版本后query等对象需要加上@ParameterObject,doc.html显示的才是form参数,具体的问题可以看官方文档Knife4jv4.0版本针对参数解析ParameterObject的问题说明|Knife4j@GetMapping("listAll")@Operation(summary="查询物料分页+条件")publicJsonVO>queryByPage
- Loggers 配置解析(log4j.xml)
龙卷_
日志框架log4jxml单元测试
Loggers配置解析我们通过下面的例子来理解log4j的Loggers配置是如何决定日志输出规则的。这个配置结合了根Logger和自定义Logger,并实现了分模块、分级别的日志记录策略。理解关键在于层级关系、继承机制和级别过滤的相互作用。日志输出规则层级继承所有Logger默认继承根Logger配置com.ruoyi.admin.log及其子包的日志优先使用自定义Logger配置。即有子类的情
- 关于使用get请求传递map的理解和示例
胡斌附体
vuerequestinterceptergetmap
背景。ruoyi框架的pc端使用了这种方式,但小程序端与pc端用到的request不相同。调用接口报错。处理后前端。对request请求拦截做处理,使用与pc端相同逻辑。transform是将对象中每一个字段值做拆解拼接成url参数,使用&分隔。这是拦截request请求。给出了截图和js。constinstall=(Vue,vm)=>{Vue.prototype.$u.http.setConfi
- ruoyi-flowable-plus中satoken的配置使用
胡斌附体
satokenruoyi拦截器登录配置
背景。在排查用户登录信息时。原以为时token生成时获取用户信息异常,于是排查satoken的配置方式等等。这里就顺便把相关内容梳理一下satoken的github地址应该是挺好用,我是没太用过,以后注意在项目中要配置的拦截器可以看到配置中权限接口的实现部分。在实际登录时。调用这一段代码StpUtil.login...会触发拦截器实现了satokenlistner接口的拦截器待续
- 【Java树形菜单系统设计与实现】
软件205
springbootjava
Java树形菜单系统设计与实现ruoyi实现根据用户ID查询菜单树根据给定的父节点ID构建出树形结构的子菜单。递归地为当前菜单节点构建完整的子树结构查找特定父节点所有直接子节点判断是否有子节点简化ruoyi实现根据用户ID查询菜单树publicListselectMenuTreeByUserId(StringuseNo){Listmenus=null;if(SecurityUtils.isAdmi
- ruoyi框架重复提交限制解读
胡斌附体
国际化ruoyi前后端重复提交拦截器缓存注解
背景:这里使用到的框架是ruoyi-flowable-plus0.8.X-vform分支1.如果发现怎么也找不到这句话【不允许重复提交,请稍候再试】算是中奖了。因为如果靠全局搜索你可能前后端代码都无法找到存在的地方。根本原因:是中文编码导致乱码。2.限制重复提交的原理(学到了)1.后端通过缓存实现2.通过声明**注解**【@repeatSubmit】实现3.在Api层方法配置注解就可以使用4.还可
- 1若依系统配置部署
若依系统简介若依概述若依微服务版RuoYi-Cloud,基于SpringBoot、SpringCloud&Alibaba、OAuth2的前后端分离的后台管理系统。RuoYi-Cloud是一个JavaEE企业级快速开发平台,基于经典技术组合(SpringBoot、SpringCloud&Alibaba、OAuth2、Vue、Element-UI),内置模块如:部门管理、角色用户、菜单及按钮授权、数据
- ruoyi-plus-could 负载均衡 通过 Gateway模块配置负载均衡
攀小黑
负载均衡gatewayjava
这个很简单的,其实都不用配置。在nacos中ruoyi-gateway.yml配置文件里面:其实他已经给我们配置好了,只要uri:lb有【lb】就表示负载均衡配置我们只需要在启动服务的时候改下端口就可以。然后通过小工具测试下:结果非常可观日志也没有问题!百度半天没想到这么简单
- 在线API文档knife4j的使用方法
本就一无所有 何惧重新开始
spring
1、简介knife4j是国人开发的一个为JavaMVC框架生成Api文档的解决方案,前身是swagger-bootstrap-ui,取名knif4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!2、准备工作2.1在pom文件中添加依赖com.github.xiaoyminknife4j-openapi2-spring-boot-starter4.3.02.2在application.prope
- 图解 SpringCloud 微服务架构
龙域S
架构springcloud微服务
国产Star破10w+的开源项目,前端包括管理后台+微信小程序,后端支持单体和微服务架构。功能涵盖RBAC权限、SaaS多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:Boot仓库:https://gitee.com/zhijiantianya/ruoyi-vue-proCloud仓库:https://gitee.com/zhijiantianya/yudao-cloud视频教
- RuoYi前后端分离框架将前端dist资源集成到Jar包中独立部署
mister-big
RuoYi-Vue使用前端jarjava
一、背景.NET体系下通常采用服务端渲染(如RazorPages)或直接包含前端资源,而JavaSpringBoot项目虽支持静态资源打包,但VueCLI工程需要独立的构建流程。主管要求将编译后的Vue工程直接嵌入JAR包中方便维护,本人不推荐这样,原因有三:第一、VueCLI需要npmrunbuild生成dist,而Java项目通过Maven/Gradle打包,二者生命周期不同步;其次前端每次修
- 若依前后端分离Spring Security新增手机号登录
qq_39845279
spring数据库java
备忘贴转自:【若依RuoYi短信验证码登录】汇总_数据库_z_xiao_qiang-RuoYi若依配置Security:按照Security的流程图可知,实现多种方式登录,只需要重写三个主要的组件,第一个用户认证处理过滤器,第二个用户认证token类,第三个,自定义短信登录身份认证。/***参考UsernamePasswordAuthenticationToken类,继承AbstractAuthe
- RuoYi-Vue前后端分离版集成Cas单点登录
Wen先森
javavue.js前端javascriptjava
后端1.添加CAS依赖在common模块pom添加spring-security-cas依赖:org.springframework.securityspring-security-cas2.修改配置文件在admin模块下的application.yml配置文件中添加:#CAS相关配置start#CAS服务器配置cas:server:host:#CAS服务地址url:http://host:por
- ruoyi-vue前后端分离实现统一登录认证登录
woshiyouxiuren
vue.js前端javascript
1、功能描述本系统作为其他系统的子系统,不使用自己的登录页面,从统一平台跳转到本平台。所以本平台需要作为子系统进行统一认证登录。功能:1.从统一平台使用携带认证票据的链接进入本系统;2.定时校验认证是否过期;3.上述两个失败后均跳转到特定网址;参考网址:https://blog.csdn.net/csdn_avatar_2019/article/details/1293069272、前端2.1新增
- Docker Compose一分钟快速部署RuoYi-Cloud
luo_code
运行环境后端学习数据库docker容器运维后端java数据库
1.准备好docker.tar.gz压缩包2.使用tar解压这个压缩包解压之后的目录下有所有需要预先准备的文件以及docker-compose.yaml文件,docker-compose.yaml文件内容如下:name:devsoftservices:mysql:image:mysql:8.0.24restart:alwayscontainer_name:mysqlenvironment:-MYS
- RuoYi前后端分离框架集成手机短信验证码(一)之后端篇
mister-big
RuoYi-Vue使用java
一、背景本项目基于RuoYi3.8.9前后端分离框架构建,采用SpringSecurity实现系统权限管理。作为企业级应用架构的子模块,系统需要与顶层项目实现用户数据无缝对接(以手机号作为统一用户标识),同时承担用户信息采集的重要职能。为此,我们在保留原有账号密码登录方式的基础上,创新性地集成了手机号验证码登录/注册功能,既满足了企业级用户管理的标准化需求,又优化了终端用户的使用体验。二、短信集成
- 对接聚水潭-胜算接口
天天上天庭
python开发语言
获取胜算账单数据【奇门接口】官方API:获取胜算账单数据【奇门接口】-聚水潭ERP开放平台对接胜算接口的时候,需要注意无法直接使用奇门的JKD,需要重写奇门的请求方法,因为有部分参数,奇门JDK中不存在,需要手动填写。比如:target_app_key等。测试DEMO:importcom.ruoyi.common.utils.StringUtils;importjava.io.IOExceptio
- SQL的各种连接查询
xieke90
UNION ALLUNION外连接内连接JOIN
一、内连接
概念:内连接就是使用比较运算符根据每个表共有的列的值匹配两个表中的行。
内连接(join 或者inner join )
SQL语法:
select * fron
- java编程思想--复用类
百合不是茶
java继承代理组合final类
复用类看着标题都不知道是什么,再加上java编程思想翻译的比价难懂,所以知道现在才看这本软件界的奇书
一:组合语法:就是将对象的引用放到新类中即可
代码:
package com.wj.reuse;
/**
*
* @author Administrator 组
- [开源与生态系统]国产CPU的生态系统
comsci
cpu
计算机要从娃娃抓起...而孩子最喜欢玩游戏....
要让国产CPU在国内市场形成自己的生态系统和产业链,国家和企业就不能够忘记游戏这个非常关键的环节....
投入一些资金和资源,人力和政策,让游
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
商人shang
jvm内存
jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。
HotSpot虚拟机GC算法采用分代收
- 页面上调用 QQ
oloz
qq
<A href="tencent://message/?uin=707321921&Site=有事Q我&Menu=yes">
<img style="border:0px;" src=http://wpa.qq.com/pa?p=1:707321921:1></a>
- 一些问题
文强chu
问题
1.eclipse 导出 doc 出现“The Javadoc command does not exist.” javadoc command 选择 jdk/bin/javadoc.exe 2.tomcate 配置 web 项目 .....
SQL:3.mysql * 必须得放前面 否则 select&nbs
- 生活没有安全感
小桔子
生活孤独安全感
圈子好小,身边朋友没几个,交心的更是少之又少。在深圳,除了男朋友,没几个亲密的人。不知不觉男朋友成了唯一的依靠,毫不夸张的说,业余生活的全部。现在感情好,也很幸福的。但是说不准难免人心会变嘛,不发生什么大家都乐融融,发生什么很难处理。我想说如果不幸被分手(无论原因如何),生活难免变化很大,在深圳,我没交心的朋友。明
- php 基础语法
aichenglong
php 基本语法
1 .1 php变量必须以$开头
<?php
$a=” b”;
echo
?>
1 .2 php基本数据库类型 Integer float/double Boolean string
1 .3 复合数据类型 数组array和对象 object
1 .4 特殊数据类型 null 资源类型(resource) $co
- mybatis tools 配置详解
AILIKES
mybatis
MyBatis Generator中文文档
MyBatis Generator中文文档地址:
http://generator.sturgeon.mopaas.com/
该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。
本文使用Markdown进行编辑,但是博客显示效
- 继承与多态的探讨
百合不是茶
JAVA面向对象 继承 对象
继承 extends 多态
继承是面向对象最经常使用的特征之一:继承语法是通过继承发、基类的域和方法 //继承就是从现有的类中生成一个新的类,这个新类拥有现有类的所有extends是使用继承的关键字:
在A类中定义属性和方法;
class A{
//定义属性
int age;
//定义方法
public void go
- JS的undefined与null的实例
bijian1013
JavaScriptJavaScript
<form name="theform" id="theform">
</form>
<script language="javascript">
var a
alert(typeof(b)); //这里提示undefined
if(theform.datas
- TDD实践(一)
bijian1013
java敏捷TDD
一.TDD概述
TDD:测试驱动开发,它的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。
- [Maven学习笔记十]Maven Profile与资源文件过滤器
bit1129
maven
什么是Maven Profile
Maven Profile的含义是针对编译打包环境和编译打包目的配置定制,可以在不同的环境上选择相应的配置,例如DB信息,可以根据是为开发环境编译打包,还是为生产环境编译打包,动态的选择正确的DB配置信息
Profile的激活机制
1.Profile可以手工激活,比如在Intellij Idea的Maven Project视图中可以选择一个P
- 【Hive八】Hive用户自定义生成表函数(UDTF)
bit1129
hive
1. 什么是UDTF
UDTF,是User Defined Table-Generating Functions,一眼看上去,貌似是用户自定义生成表函数,这个生成表不应该理解为生成了一个HQL Table, 貌似更应该理解为生成了类似关系表的二维行数据集
2. 如何实现UDTF
继承org.apache.hadoop.hive.ql.udf.generic
- tfs restful api 加auth 2.0认计
ronin47
目前思考如何给tfs的ngx-tfs api增加安全性。有如下两点:
一是基于客户端的ip设置。这个比较容易实现。
二是基于OAuth2.0认证,这个需要lua,实现起来相对于一来说,有些难度。
现在重点介绍第二种方法实现思路。
前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGe
- jdk环境变量配置
byalias
javajdk
进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置:
1、下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是:jdk-7u79-windows-x64.exe
2、安装jdk-7u79-windows-x64.exe
3、配置环境变量:右击"计算机"-->&quo
- 《代码大全》表驱动法-Table Driven Approach-2
bylijinnan
java
package com.ljn.base;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.uti
- SQL 数值四舍五入 小数点后保留2位
chicony
四舍五入
1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。
2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后位数。
例如:
select cast(round(12.5,2) as numeric(5,2))  
- c++运算符重载
CrazyMizzz
C++
一、加+,减-,乘*,除/ 的运算符重载
Rational operator*(const Rational &x) const{
return Rational(x.a * this->a);
}
在这里只写乘法的,加减除的写法类似
二、<<输出,>>输入的运算符重载
&nb
- hive DDL语法汇总
daizj
hive修改列DDL修改表
hive DDL语法汇总
1、对表重命名
hive> ALTER TABLE table_name RENAME TO new_table_name;
2、修改表备注
hive> ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comm
- jbox使用说明
dcj3sjt126com
Web
参考网址:http://www.kudystudio.com/jbox/jbox-demo.html jBox v2.3 beta [
点击下载]
技术交流QQGroup:172543951 100521167
[2011-11-11] jBox v2.3 正式版
- [调整&修复] IE6下有iframe或页面有active、applet控件
- UISegmentedControl 开发笔记
dcj3sjt126com
// typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {
// UISegmentedControlStylePlain, // large plain
&
- Slick生成表映射文件
ekian
scala
Scala添加SLICK进行数据库操作,需在sbt文件上添加slick-codegen包
"com.typesafe.slick" %% "slick-codegen" % slickVersion
因为我是连接SQL Server数据库,还需添加slick-extensions,jtds包
"com.typesa
- ES-TEST
gengzg
test
package com.MarkNum;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation
- 为何外键不再推荐使用
hugh.wang
mysqlDB
表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。
在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不
- 领域驱动设计
julyflame
VODAO设计模式DTOpo
概念:
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对
- 单例设计模式
hm4123660
javaSingleton单例设计模式懒汉式饿汉式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
&nb
- logback
zhb8015
loglogback
一、logback的介绍
Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-class
- 整合Kafka到Spark Streaming——代码示例和挑战
Stark_Summer
sparkstormzookeeperPARALLELISMprocessing
作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管。本文,Michael详细的演示了如何将Kafka整合到Spark Streaming中。 期间, Michael还提到了将Kafka整合到 Spark Streaming中的一些现状,非常值得阅读,虽然有一些信息在Spark 1.2版
- spring-master-slave-commondao
王新春
DAOspringdataSourceslavemaster
互联网的web项目,都有个特点:请求的并发量高,其中请求最耗时的db操作,又是系统优化的重中之重。
为此,往往搭建 db的 一主多从库的 数据库架构。作为web的DAO层,要保证针对主库进行写操作,对多个从库进行读操作。当然在一些请求中,为了避免主从复制的延迟导致的数据不一致性,部分的读操作也要到主库上。(这种需求一般通过业务垂直分开,比如下单业务的代码所部署的机器,读去应该也要从主库读取数