{"id":5880,"date":"2024-08-01T22:49:00","date_gmt":"2024-08-01T14:49:00","guid":{"rendered":"https:\/\/xinchewhd.com.cn\/?p=5880"},"modified":"2024-08-02T15:39:12","modified_gmt":"2024-08-02T07:39:12","slug":"%e6%89%8b%e5%86%99%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a5%bd%e7%94%a8%e7%9a%84%e9%99%90%e6%b5%81%e3%80%81%e5%88%86%e5%b8%83%e5%bc%8f%e9%94%81%e5%92%8c%e6%89%8b%e5%8a%a8%e6%8e%a7%e5%88%b6%e4%ba%8b%e5%8a%a1","status":"publish","type":"post","link":"https:\/\/xinchewhd.com.cn\/index.php\/spring-boot\/%e6%89%8b%e5%86%99%e4%ba%86%e4%b8%80%e4%b8%aa%e5%a5%bd%e7%94%a8%e7%9a%84%e9%99%90%e6%b5%81%e3%80%81%e5%88%86%e5%b8%83%e5%bc%8f%e9%94%81%e5%92%8c%e6%89%8b%e5%8a%a8%e6%8e%a7%e5%88%b6%e4%ba%8b%e5%8a%a1\/","title":{"rendered":"\u624b\u5199\u4e86\u4e00\u4e2a\u597d\u7528\u7684\u9650\u6d41\u3001\u5206\u5e03\u5f0f\u9501\u548c\u624b\u52a8\u63a7\u5236\u4e8b\u52a1\u76f8\u7ed3\u5408\u7684starter\u542f\u52a8\u5668"},"content":{"rendered":"<div class=\"wxsyncmain\">\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"rich_pages wxw-img lazyload\" style=\"width: 100%; height: auto !important;\" data-src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222935195.png\" src=\"https:\/\/s.nmxc.ltd\/sakurairo_vision\/@2.6\/load_svg\/inload.svg\" onerror=\"imgError(this)\" data-backh=\"236\" data-backw=\"317\" data-galleryid=\"\" data-imgfileid=\"100001435\" data-ratio=\"0.7444794952681388\" data-s=\"300,640\" data-type=\"png\" data-w=\"317\" \/><noscript><img decoding=\"async\" class=\"rich_pages wxw-img\" style=\"width: 100%; height: auto !important;\" src=\"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222935195.png\" data-backh=\"236\" data-backw=\"317\" data-galleryid=\"\" data-imgfileid=\"100001435\" data-ratio=\"0.7444794952681388\" data-s=\"300,640\" data-type=\"png\" data-w=\"317\" \/><\/noscript><\/p>\n<h1 style=\"break-after: avoid-page; break-inside: avoid; orphans: 4; font-size: 2.25em; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.2; cursor: text; border-bottom: 1px solid #eeeeee; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; letter-spacing: normal; text-align: start;\">1.\u524d\u8a00<\/h1>\n<section style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: justify; text-indent: 2em;\">\u7531\u4e8e\u4e4b\u524d\u5199\u5982\u4e0b\u4e24\u7bc7\u6587\u7ae0\uff1a<\/section>\n<section style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: justify; text-indent: 2em;\">\u81ea\u5b9a\u4e49\u6ce8\u89e3\u5b9e\u73b0Redis\u5206\u5e03\u5f0f\u9501\u3001\u624b\u52a8\u63a7\u5236\u4e8b\u52a1\u548c\u6839\u636e\u5f02\u5e38\u540d\u5b57\u6216\u5185\u5bb9\u9650\u6d41\u7684\u4e09\u5408\u4e00\u7684\u529f\u80fd<\/section>\n<pre lang=\"\" style=\"overflow: visible; font-family: var(--monospace); font-size: 0.9em; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: #f8f8f8; border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: #333333; letter-spacing: normal; border: 1px solid #e7eaed;\" spellcheck=\"false\"><span style=\"padding-right: 0.1px;\" role=\"presentation\">https:\/\/mp.weixin.qq.com\/s\/aW4PU_wlNVfzPc6uGFnndA<\/span><span style=\"padding-right: 0.1px;\" role=\"presentation\">https:\/\/blog.csdn.net\/qq_34905631\/article\/details\/133325782?spm=1001.2014.3001.5501<\/span><\/pre>\n<section style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: justify; text-indent: 2em;\">\u81ea\u5b9a\u4e49redission\u88c5\u914d\u548c\u96c6\u6210\u5206\u5e03\u5f0f\u5f00\u6e90\u9650\u6d41\u4e1a\u52a1\u7ec4\u4ef6ratelimiter-spring-boot-starter\u7684\u6b63\u786e\u59ff\u52bf<\/section>\n<pre lang=\"\" style=\"overflow: visible; font-family: var(--monospace); font-size: 0.9em; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: #f8f8f8; border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: #333333; letter-spacing: normal; border: 1px solid #e7eaed;\" spellcheck=\"false\"><span style=\"padding-right: 0.1px;\" role=\"presentation\">https:\/\/mp.weixin.qq.com\/s\/TFbKOLMZfu5nuVRzhd9oVg<\/span><span style=\"padding-right: 0.1px;\" role=\"presentation\">https:\/\/blog.csdn.net\/qq_34905631\/article\/details\/133845032?spm=1001.2014.3001.5501<\/span><\/pre>\n<section style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: justify; text-indent: 2em;\">\u5728\u9879\u76ee\u4e2d\u4f7f\u7528\u4e0b\u6765\u5c31\u89c9\u5f97\u80fd\u4e0d\u80fd\u628a\u8fd9\u4e24\u4e2a\u7ed3\u5408\u8d77\u6765\u4f7f\u7528\uff1f\u505a\u6210\u4e00\u4e2a\u542f\u52a8\u5668starter,\u4e0d\u7136\u8fd9\u4e2a\u9879\u76ee\u8981\u7528\uff0c\u8981\u53bb\u62f7\u8d1d\u4e00\u6b21\u91cd\u590d\u7684\u4ee3\u7801\uff0c\u91cd\u590d\u7684\u4ee3\u7801\u53ea\u8981\u5199\u4e00\u6b21\u5c31\u884c\uff0c\u62bd\u6210\u53ef\u590d\u7528\u7684\u5de5\u5177\u3001SDK\u6216\u8005starter,\u8fd9\u6837\u5c31\u590d\u7528\u6027\u5c31\u975e\u5e38\u7684\u597d\uff0c\u91cd\u590d\u7684\u4e8b\u60c5\u4e0d\u7528\u53bb\u91cd\u590d\u7684\u641e\uff0c\u96c6\u6210\u6548\u7387\u5927\u5927\u63d0\u9ad8\uff0c\u4f7f\u7528\u4e5f\u66f4\u65b9\u4fbf\uff0c\u4e0b\u9762\u63ed\u6653\u8fd9\u4e2astarter\u662f\u5982\u4f55\u5b9e\u73b0\u7684.<\/section>\n<p style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: start;\">\n<h1 style=\"break-after: avoid-page; break-inside: avoid; orphans: 4; font-size: 2.25em; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.2; cursor: text; border-bottom: 1px solid #eeeeee; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; letter-spacing: normal; text-align: start;\">2.\u539f\u7406<\/h1>\n<section style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: justify; text-indent: 2em;\">\u4f7f\u7528\u4e86\u4e24\u5c42\u52a8\u6001\u4ee3\u7406\uff0c\u5185\u5c42\u662faop\u7684\u6ce8\u89e3\u5207\u9762\u4ee3\u7406\uff0c\u5916\u5c42\u662fjdk\u7684\u52a8\u6001\u4ee3\u7406\uff0c\u5c31\u8fd9\u4e48\u7b80\u5355\uff0c\u5177\u4f53\u53ef\u4ee5\u53bb\u770b\u6e90\u7801\u3002<\/section>\n<p style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: start;\">\n<h1 style=\"break-after: avoid-page; break-inside: avoid; orphans: 4; font-size: 2.25em; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.2; cursor: text; border-bottom: 1px solid #eeeeee; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; letter-spacing: normal; text-align: start;\">3.\u4f7f\u7528<\/h1>\n<h2 style=\"break-after: avoid-page; break-inside: avoid; orphans: 4; font-size: 1.75em; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.225; cursor: text; border-bottom: 1px solid #eeeeee; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; letter-spacing: normal; text-align: start;\">3.1\u9879\u76ee\u5730\u5740<\/h2>\n<pre lang=\"\" style=\"overflow: visible; font-family: var(--monospace); font-size: 0.9em; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: #f8f8f8; border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: #333333; letter-spacing: normal; border: 1px solid #e7eaed;\" spellcheck=\"false\"><span style=\"padding-right: 0.1px;\" role=\"presentation\">https:\/\/gitee.com\/BigBigFeiFei\/biz-ratelimiter-redissonlock-manualctrltrans-spring-boot-start<\/span><span style=\"padding-right: 0.1px;\" role=\"presentation\">https:\/\/github.com\/BigBigFeiFei\/biz-ratelimiter-redissonlock-manualctrltrans-spring-boot-start<\/span><\/pre>\n<p style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: start;\">\n<h2 style=\"break-after: avoid-page; break-inside: avoid; orphans: 4; font-size: 1.75em; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.225; cursor: text; border-bottom: 1px solid #eeeeee; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; letter-spacing: normal; text-align: start;\">3.2\u4f9d\u8d56<\/h2>\n<section class=\"code-snippet__fix code-snippet__js\">\n<pre class=\"code-snippet__js\" data-lang=\"xml\"><code><span class=\"code-snippet_outer\"><span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">\n   <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>io.gitee.bigbigfeifei<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">\n   <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>biz-ratelimiter-redissonlock-manualctrltrans-spring-boot-start<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">\n   <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>1.0<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\"><span class=\"code-snippet__tag\">\n&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><\/pre>\n<\/section>\n<section class=\"code-snippet__fix code-snippet__js\">\n<pre class=\"code-snippet__js\" data-lang=\"xml\"><code><span class=\"code-snippet_outer\"><span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span>  <\/span><\/code><code><span class=\"code-snippet_outer\">\n  <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>io.github.bigbigfeifei<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">\n  <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>biz-ratelimiter-redissonlock-manualctrltrans-spring-boot-start<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">\n  <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>1.0<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\"><span class=\"code-snippet__tag\">\n&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span>    <\/span><\/code><\/pre>\n<\/section>\n<p style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: start;\">\n<h2 style=\"break-after: avoid-page; break-inside: avoid; orphans: 4; font-size: 1.75em; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.225; cursor: text; border-bottom: 1px solid #eeeeee; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; letter-spacing: normal; text-align: start;\">3.3\u4f7f\u7528\u8bf4\u660e<\/h2>\n<section class=\"code-snippet__fix code-snippet__js\">\n<pre class=\"code-snippet__js\" data-lang=\"xml\"><code><span class=\"code-snippet_outer\">## biz-ratelimiter-redissonlock-manualctrltrans-spring-boot-start\u542f\u52a8\u5668<\/span><\/code><code><span class=\"code-snippet_outer\">1. \u9879\u76ee\u4e2d\u5f15\u5165\u4f9d\u8d56\u5982\u4e0b\uff1a\u4e0b\u9762\u662f\u4e00\u4e2a\u65b0\u9879\u76eedemo\u7684\u5b8c\u6574pom\u9700\u8981\u5f15\u5165\u7684\u4f9d\u8d56\uff0c\u6839\u636e\u81ea\u5df1\u9879\u76ee\u4f9d\u8d56\u5220\u51cf<\/span><\/code><code><span class=\"code-snippet_outer\">\u5982\u679c\u9879\u76ee\u4e2d\u5f15\u5165\u5982\u4e0b\u4f9d\u8d56\u6709\u7f3a\u5c11\u4f9d\u8d56\u9700\u8981\u81ea\u884c\u8865\u5168\u6240\u9700\u4f9d\u8d56\u6216\u8005\u662f\u6709\u4f9d\u8d56\u51b2\u7a81\u9700\u8981\u89e3\u51b3\u4f9d\u8d56\u51b2\u7a81\uff0c\u9879\u76ee\u624d\u53ef\u4ee5\u6b63\u5e38\u542f\u52a8\u8fd0\u884c\u8d77\u6765<\/span><\/code><code><span class=\"code-snippet_outer\">```<\/span><\/code><code><span class=\"code-snippet_outer\"><span class=\"code-snippet__meta\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\"><span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">project<\/span> <span class=\"code-snippet__attr\">xmlns<\/span>=<span class=\"code-snippet__string\">\"http:\/\/maven.apache.org\/POM\/4.0.0\"<\/span><\/span><\/span><\/code><code><span class=\"code-snippet_outer\">         <span class=\"code-snippet__attr\">xmlns:xsi<\/span>=<span class=\"code-snippet__string\">\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">         <span class=\"code-snippet__attr\">xsi:schemaLocation<\/span>=<span class=\"code-snippet__string\">\"http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"<\/span>&gt;<\/span><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">modelVersion<\/span>&gt;<\/span>4.0.0<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">modelVersion<\/span>&gt;<\/span><\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.example<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>TestLimiter<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>1.0-SNAPSHOT<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">properties<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">java.version<\/span>&gt;<\/span>1.8<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">java.version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">spring-cloud.version<\/span>&gt;<\/span>Hoxton.SR9<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">spring-cloud.version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">spring-cloud-alibaba.version<\/span>&gt;<\/span>2.2.2.RELEASE<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">spring-cloud-alibaba.version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">commons-collections4.vsersion<\/span>&gt;<\/span>4.1<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">commons-collections4.vsersion<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">spring-boot.version<\/span>&gt;<\/span>2.3.12.RELEASE<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">spring-boot.version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">spring-cloud.version<\/span>&gt;<\/span>Hoxton.SR9<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">spring-cloud.version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">properties<\/span>&gt;<\/span><\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependencyManagement<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependencies<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-boot-dependencies<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>${spring-boot.version}<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">type<\/span>&gt;<\/span>pom<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">type<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span>import<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework.cloud<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-cloud-dependencies<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>${spring-cloud.version}<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">type<\/span>&gt;<\/span>pom<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">type<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span>import<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>com.alibaba.cloud<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-cloud-alibaba-dependencies<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>${spring-cloud-alibaba.version}<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">type<\/span>&gt;<\/span>pom<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">type<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span>import<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependencies<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependencyManagement<\/span>&gt;<\/span><\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependencies<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-boot-starter-web<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>${spring-boot.version}<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-boot-starter<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>${spring-boot.version}<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>com.alibaba.cloud<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-cloud-starter-alibaba-nacos-config<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>com.alibaba.cloud<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-cloud-starter-alibaba-nacos-discovery<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-boot-starter-test<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span>test<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>com.alibaba<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>fastjson<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>1.2.75<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span>compile<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>mysql<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>mysql-connector-java<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span>runtime<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>com.github.taptap<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>ratelimiter-spring-boot-starter<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>1.3<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--starter\u4f9d\u8d56\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">           <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>io.gitee.bigbigfeifei<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">           <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>biz-ratelimiter-redissonlock-manualctrltrans-spring-boot-start<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">           <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>1.0<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-boot-autoconfigure<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>2.3.12.RELEASE<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.projectlombok<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>lombok<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span>provided<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">scope<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-tx<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>5.2.15.RELEASE<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-boot-starter-data-redis<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>2.3.9.RELEASE<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.springframework.boot<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>spring-boot-starter-jdbc<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>2.3.12.RELEASE<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709(\u8fde\u63a5\u6c60\u53ef\u4ee5\u9009\u7528\u5176\u5b83\u7684\u8fde\u63a5\u6c60\u4f9d\u8d56)--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>com.zaxxer<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>HikariCP<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>3.4.0<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>com.alibaba.nacos<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>nacos-client<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>2.1.2<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.apache.commons<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>commons-pool2<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>2.6.0<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__comment\">&lt;!--\u5fc5\u987b\u6709--&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.apache.commons<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>commons-lang3<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>3.10<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependency<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">dependencies<\/span>&gt;<\/span><\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">build<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">plugins<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">plugin<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span>org.apache.maven.plugins<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">groupId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span>maven-surefire-plugin<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">artifactId<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">version<\/span>&gt;<\/span>2.22.1<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">version<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">configuration<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                    <span class=\"code-snippet__tag\">&lt;<span class=\"code-snippet__name\">skipTests<\/span>&gt;<\/span>true<span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">skipTests<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">                <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">configuration<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">            <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">plugin<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">        <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">plugins<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">    <span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">build<\/span>&gt;<\/span><\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\"><span class=\"code-snippet__tag\">&lt;\/<span class=\"code-snippet__name\">project<\/span>&gt;<\/span><\/span><\/code><code><span class=\"code-snippet_outer\">```        <\/span><\/code><code><span class=\"code-snippet_outer\">2. nacos\u914d\u7f6e\u5982\u4e0b:<\/span><\/code><code><span class=\"code-snippet_outer\">```<\/span><\/code><code><span class=\"code-snippet_outer\"># \u9650\u6d41ratelimiter\u914d\u7f6e<\/span><\/code><code><span class=\"code-snippet_outer\">spring:<\/span><\/code><code><span class=\"code-snippet_outer\">  application:<\/span><\/code><code><span class=\"code-snippet_outer\">    name: xxxxx-server<\/span><\/code><code><span class=\"code-snippet_outer\">  ratelimiter:<\/span><\/code><code><span class=\"code-snippet_outer\">    enabled: true<\/span><\/code><code><span class=\"code-snippet_outer\">    redis-address: redis:\/\/ip:port<\/span><\/code><code><span class=\"code-snippet_outer\">    redis-password: xxxxxx<\/span><\/code><code><span class=\"code-snippet_outer\">    response-body: \"\u60a8\u8bf7\u6c42\u7684\u592a\u5feb\u4e86,\u8bf7\u6162\u70b9,\u4e0d\u7136\u4f1a\u6709\u70b9\u53d7\u4e0d\u4e86\u54e6!\"<\/span><\/code><code><span class=\"code-snippet_outer\">    status-code: 500<\/span><\/code><code><span class=\"code-snippet_outer\">  # \u6570\u636e\u6e90\u9700\u8981\u914d\u7f6e,\u5982\u679c\u662f\u591a\u6570\u636e\u6e90\u5c06\u8fd9\u91cc\u6539\u6210\u591a\u6570\u636e\u6e90\u914d\u7f6e<\/span><\/code><code><span class=\"code-snippet_outer\">  datasource:<\/span><\/code><code><span class=\"code-snippet_outer\">    url: jdbc:mysql:\/\/xxxx:3306\/xxxxxx?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=Asia\/Shanghai<\/span><\/code><code><span class=\"code-snippet_outer\">    username: root<\/span><\/code><code><span class=\"code-snippet_outer\">    password: xxxxx<\/span><\/code><code><span class=\"code-snippet_outer\">    driver-class-name: com.mysql.cj.jdbc.Driver<\/span><\/code><code><span class=\"code-snippet_outer\">  #redis\u914d\u7f6e,redis\u8fde\u63a5\u6c60\u4f7f\u7528\u9ed8\u8ba4\u7684lettuce\u8fde\u63a5\u6c60<\/span><\/code><code><span class=\"code-snippet_outer\">  redis:<\/span><\/code><code><span class=\"code-snippet_outer\">    host: 10.0.40.13<\/span><\/code><code><span class=\"code-snippet_outer\">    port: 6389<\/span><\/code><code><span class=\"code-snippet_outer\">    password: 12345678<\/span><\/code><code><span class=\"code-snippet_outer\">    database: 6<\/span><\/code><code><span class=\"code-snippet_outer\">    lettuce:<\/span><\/code><code><span class=\"code-snippet_outer\">      pool:<\/span><\/code><code><span class=\"code-snippet_outer\">        # \u6700\u5927\u7a7a\u95f2\u8fde\u63a5\u6570<\/span><\/code><code><span class=\"code-snippet_outer\">        max-idle: 20<\/span><\/code><code><span class=\"code-snippet_outer\">        # \u53ef\u4ee5\u5206\u914d\u7684\u6700\u5927\u8fde\u63a5\u6570<\/span><\/code><code><span class=\"code-snippet_outer\">        max-active: 50<\/span><\/code><code><span class=\"code-snippet_outer\">        # \u963b\u585e\u7684\u6700\u5927\u65f6\u95f4<\/span><\/code><code><span class=\"code-snippet_outer\">        max-wait: 10000<\/span><\/code><code><span class=\"code-snippet_outer\">        # \u6700\u5c0f\u7a7a\u95f2\u8fde\u63a5\u6570<\/span><\/code><code><span class=\"code-snippet_outer\">        min-idle: 10<\/span><\/code><code><span class=\"code-snippet_outer\"># redison\u914d\u7f6e  <\/span><\/code><code><span class=\"code-snippet_outer\">redisson:<\/span><\/code><code><span class=\"code-snippet_outer\">  lock:<\/span><\/code><code><span class=\"code-snippet_outer\">    enabled: true<\/span><\/code><code><span class=\"code-snippet_outer\">    config:<\/span><\/code><code><span class=\"code-snippet_outer\">      address: redis:\/\/ip:port<\/span><\/code><code><span class=\"code-snippet_outer\">      password: xxxxxx<\/span><\/code><code><span class=\"code-snippet_outer\"># \u9650\u6d41\u4e1a\u52a1\u63a5\u53e3\u914d\u7f6e<\/span><\/code><code><span class=\"code-snippet_outer\"># interfaceName\u540d\u79f0\u53ef\u4ee5\u914d\u7f6e\u4e00\u4e2a\u76f8\u540c\u7684\uff0cmethodName\u914d\u7f6e\u4e0d\u540c\u7684\u65b9\u6cd5\u540d\u79f0<\/span><\/code><code><span class=\"code-snippet_outer\"># \u5982\u679cinterfaceName\u63a5\u53e3\u6709\u591a\u4e2a\u65b9\u6cd5\u9700\u8981\u9650\u6d41\u64cd\u4f5c\u5c31\u53ef\u4ee5\u914d\u7f6e\u4e0b\u9762\u4e0b\u68070,1\u7684\u914d\u7f6e<\/span><\/code><code><span class=\"code-snippet_outer\"># \u4e5f\u53ef\u4ee5\u914d\u7f6e\u4e0d\u540c\u7684interfaceName\u5bf9\u5e94\u4e0d\u540c\u7684methodName\u7684\u914d\u7f6e<\/span><\/code><code><span class=\"code-snippet_outer\"># \u76f8\u540c\u7684methodName\u5bf9\u5e94\u4e0d\u540c\u7684methodName\u7684\u914d\u7f6e<\/span><\/code><code><span class=\"code-snippet_outer\"># \u4e0d\u8981\u591a\u6b21\u914d\u7f6e\u76f8\u540c\u7684interfaceName\u5bf9\u5e94\u76f8\u540c\u7684methodName\u7684\u914d\u7f6e<\/span><\/code><code><span class=\"code-snippet_outer\">limit:<\/span><\/code><code><span class=\"code-snippet_outer\">  lps:<\/span><\/code><code><span class=\"code-snippet_outer\">    - interfaceName: xxxxrService1 # \u63a5\u53e3\u7c7b\u540d\u79f0\u9996\u5b57\u6bcd\u5c0f\u5199<\/span><\/code><code><span class=\"code-snippet_outer\">      methodName: testLimit1       # \u5b9e\u73b0\u7c7b\u63a5\u53e3\u540d\u79f0<\/span><\/code><code><span class=\"code-snippet_outer\">      tokenBucketRate: 5           # \u53ef\u4ee5\u4e0d\u914d\u6709\u9ed8\u8ba4\u503c<\/span><\/code><code><span class=\"code-snippet_outer\">      bucketCapacity: 1000         # \u53ef\u4ee5\u4e0d\u914d\u6709\u9ed8\u8ba4\u503c<\/span><\/code><code><span class=\"code-snippet_outer\">      requestedTokens: 1           # \u53ef\u4ee5\u4e0d\u914d\u6709\u9ed8\u8ba4\u503c<\/span><\/code><code><span class=\"code-snippet_outer\">      enabled: true                # \u53ef\u4ee5\u4e0d\u914d\u6709\u9ed8\u8ba4\u503c(\u9ed8\u8ba4\u5f00\u542f)<\/span><\/code><code><span class=\"code-snippet_outer\">    - interfaceName: xxxxrService1 <\/span><\/code><code><span class=\"code-snippet_outer\">      methodName: testLimit2       <\/span><\/code><code><span class=\"code-snippet_outer\">      tokenBucketRate: 5         <\/span><\/code><code><span class=\"code-snippet_outer\">      bucketCapacity: 1000       <\/span><\/code><code><span class=\"code-snippet_outer\">      requestedTokens: 1         <\/span><\/code><code><span class=\"code-snippet_outer\">      enabled: true  <\/span><\/code><code><span class=\"code-snippet_outer\">    - interfaceName: xxxxrService2<\/span><\/code><code><span class=\"code-snippet_outer\">      methodName: testLimit3      <\/span><\/code><code><span class=\"code-snippet_outer\">      tokenBucketRate: 5         <\/span><\/code><code><span class=\"code-snippet_outer\">      bucketCapacity: 1000       <\/span><\/code><code><span class=\"code-snippet_outer\">      requestedTokens: 1         <\/span><\/code><code><span class=\"code-snippet_outer\">      enabled: true     <\/span><\/code><code><span class=\"code-snippet_outer\">```<\/span><\/code><code><span class=\"code-snippet_outer\">3. \u542f\u52a8\u7c7b\u4e0a\u52a0\u5165\u5982\u4e0b\u6ce8\u89e3\uff1a<\/span><\/code><code><span class=\"code-snippet_outer\">   @@EnableZlfBizRateLimiter<\/span><\/code><code><span class=\"code-snippet_outer\">4. \u529f\u80fd\u8bf4\u660e<\/span><\/code><code><span class=\"code-snippet_outer\"> 4.1 \u53ef\u4ee5\u5355\u72ec\u4f7f\u7528redissonLock\u5206\u5e03\u5f0f\u9501(@BizIdempotentManualCtrlTransLimiterAnno\u6ce8\u89e3)<\/span><\/code><code><span class=\"code-snippet_outer\"> 4.2 \u53ef\u4ee5\u5355\u72ec\u4f7f\u7528\u624b\u52a8\u63a7\u5236\u4e8b\u52a1\u63d0\u4ea4\uff0c\u5f02\u5e38\u4e8b\u52a1\u56de\u6eda(@BizIdempotentManualCtrlTransLimiterAnno\u6ce8\u89e3)<\/span><\/code><code><span class=\"code-snippet_outer\"> 4.3 \u53ef\u4ee5\u7ec4\u5408\u4f7f\u75284.1\u548c4.2<\/span><\/code><code><span class=\"code-snippet_outer\"> 4.4 \u53ef\u4ee5\u5355\u72ec\u4f7f\u7528ratelimiter\u529f\u80fd(\u6ce8\u89e3\u65b9\u5f0f-ratelimiter\u5f00\u6e90\u7ec4\u4ef6\u81ea\u5e26\u7684\u6ce8\u89e3)<\/span><\/code><code><span class=\"code-snippet_outer\">   ratelimiter\u5f00\u6e90\u9650\u6d41\u7ec4\u4ef6github\u9879\u76ee\u5730\u5740\uff1ahttps:\/\/github.com\/TapTap\/ratelimiter-spring-boot-starter<\/span><\/code><code><span class=\"code-snippet_outer\"> 4.5 \u53ef\u4ee5\u5355\u72ec\u4f7f\u7528ratelimiter\u7684\u4ee4\u724c\u6876\u9650\u6d41 + \u6ed1\u52a8\u7a97\u53e3\u9650\u6d41<\/span><\/code><code><span class=\"code-snippet_outer\"> 4.6 \u53ef\u4ee5\u7ec4\u5408\u4f7f\u75284.1\u30014.2\u30014.4<\/span><\/code><code><span class=\"code-snippet_outer\"> 4.7 \u53ef\u4ee5\u7ec4\u5408\u4f7f\u75284.1\u30014.2\u30014.5<\/span><\/code><code><span class=\"code-snippet_outer\">5. \u9879\u76ee\u4e2d\u4f7f\u7528<\/span><\/code><code><span class=\"code-snippet_outer\">```<\/span><\/code><code><span class=\"code-snippet_outer\"># service\u5c42\u5b9a\u4e49\u4e00\u4e2a\u63a5\u53e3<\/span><\/code><code><span class=\"code-snippet_outer\">public interface xxxRateLimiterService {<\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">   RestResponse testLimit(String key, String params);<\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">}<\/span><\/code><code><span class=\"code-snippet_outer\"># service\u5c42\u5b9a\u4e49\u4e00\u4e2a\u63a5\u53e3\u5b9e\u73b0\u7c7b<\/span><\/code><code><span class=\"code-snippet_outer\">@Slf4j<\/span><\/code><code><span class=\"code-snippet_outer\">@Service<\/span><\/code><code><span class=\"code-snippet_outer\">public class xxxBizRateLimiterServiceImpl implements xxxBizRateLimiterService {<\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    #\u5206\u5e03\u5f0f\u9501\u548c\u624b\u52a8\u63a7\u5236\u4e8b\u52a1\u6ce8\u89e3(aop + \u81ea\u5b9a\u4e49\u6ce8\u89e3\u5b9e\u73b0),\u6839\u636e\u9700\u8981\u52a0\u8be5\u6ce8\u89e3<\/span><\/code><code><span class=\"code-snippet_outer\">    #\u65b9\u6cd5\u683c\u5f0f\u5fc5\u987b\u4e3apublic\u4fee\u9970,\u65b9\u6cd5\u7b2c\u4e00\u53c2\u6570\u5fc5\u987b\u4e3aString\u7c7b\u578b,\u8be5\u53c2\u6570\u7ea6\u5b9a\u662f\u4f5c\u4e3a\u5206\u5e03\u5f0f\u9501\u7684key(\u4f20\u5165\u5565\u683c\u5f0f\u5c31\u662f\u5565\u683c\u5f0f)<\/span><\/code><code><span class=\"code-snippet_outer\">    #\u65b9\u6cd5\u4e2d\u4e0d\u7528\u4f7f\u7528try\/catch\u5426\u5219\u4e8b\u52a1\u4e0d\u4f1a\u56de\u6eda,\u5982\u679c\u4f7f\u7528\u4e86try\/catch--&gt;\u5728catch\u4e2d\u9700\u8981\u628a\u5f02\u5e38\u629b\u51fa(\u5728catch\u91cc\u9762throw new RuntimeException(e.getMessage());\u5c06\u5f02\u5e38\u629b\u51fa)\u5230\u5916\u5c42\u7ed9aop\u4ee3\u7406try\/catch\u624d\u80fd\u56de\u6eda\u4e8b\u52a1<\/span><\/code><code><span class=\"code-snippet_outer\">    @BizIdempotentManualCtrlTransLimiterAnno(isOpenManualCtrlTrans = true, isOpenRedissonLock = true)<\/span><\/code><code><span class=\"code-snippet_outer\">    @Override<\/span><\/code><code><span class=\"code-snippet_outer\">    public RestResponse testLimit(String key, String params) {<\/span><\/code><code><span class=\"code-snippet_outer\">        log.info(\"=========BizRateLimiterServiceImpl\u65b9\u6cd5\u5f00\u59cbkey:{},params:{}=============\", key, params);<\/span><\/code><code><span class=\"code-snippet_outer\">        return RestResponse.success(Boolean.TRUE);<\/span><\/code><code><span class=\"code-snippet_outer\">    }<\/span><\/code><code>    <\/code><code><span class=\"code-snippet_outer\">}<\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\"># <\/span><\/code><code><span class=\"code-snippet_outer\">@RestController<\/span><\/code><code><span class=\"code-snippet_outer\">@RequestMapping(\"limit\")<\/span><\/code><code><span class=\"code-snippet_outer\">public class xxxRateLimiterController {<\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    #\u8be5biz-ratelimiter-redissonlock-manualctrltrans-spring-boot-start\u7ec4\u4ef6\u63d0\u4f9b\u4e86\u4e00\u5957service\u63a5\u53e3,\u76f4\u63a5\u8c03\u7528\u5373\u53ef<\/span><\/code><code><span class=\"code-snippet_outer\">    @Autowired<\/span><\/code><code><span class=\"code-snippet_outer\">    private BizRateLimiterService bizRateLimiterService;<\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    #\u4e0a\u9762xxxRateLimiterService\u63a5\u53e3\u7684bean<\/span><\/code><code><span class=\"code-snippet_outer\">    @Autowired<\/span><\/code><code><span class=\"code-snippet_outer\">    private xxxBizRateLimiterService xxxBizRateLimiterService;<\/span><\/code><code><\/code><code><span class=\"code-snippet_outer\">    @GetMapping(\"\/testLimit\")<\/span><\/code><code><span class=\"code-snippet_outer\">    public RestResponse testLimit() {<\/span><\/code><code><span class=\"code-snippet_outer\">        #\u5148\u5224\u65ad\u4e00\u4e2a\u914d\u7f6e\u5bf9\u5e94\u7684\u63a5\u53e3\u662f\u5426\u5f00\u542f4.5\u7684\u529f\u80fd<\/span><\/code><code><span class=\"code-snippet_outer\">        #\u63a5\u53e3\u8c03\u7528\u7684\u4f7f\u7528index\u4e0b\u6807\u9700\u8981\u5bf9\u5e94\u597d(\u914d\u7f6e\u548c\u63a5\u53e3\u7684\u8c03\u7528\u7684\u65f6\u5019\u662f\u901a\u8fc7index\u6765\u627e\u5230\u662f\u54ea\u4e2a\u63a5\u53e3\u7684\u54ea\u4e2a\u65b9\u6cd5)<\/span><\/code><code><span class=\"code-snippet_outer\">        if (bizRateLimiterService.enabled(0)) {<\/span><\/code><code><span class=\"code-snippet_outer\">            # \u6ed1\u52a8\u7a97\u53e3\u9650\u6d41key,\u6ed1\u52a8\u7a97\u53e3\u65f6\u95f4\u662f3s\u5185,\u8be5key\u53ef\u4ee5\u4f20\u4e00\u4e2a\u552f\u4e00\u7684\u6807\u8bc6,\u6bd4\u5982\u7528\u6237\u7684id,\u8ba2\u5355\u53f7orderNo,\u4e5f\u5c31\u662f3s\u5185\u53ef\u4ee5\u9650\u5236\u6839\u636e\u7528\u6237\u552f\u4e00\u6807\u8bc6\u53ea\u80fd\u70b9\u4e00\u6b21<\/span><\/code><code><span class=\"code-snippet_outer\">            String timeWindowKey = \"123456\";<\/span><\/code><code><span class=\"code-snippet_outer\">            # \u8fd9\u91cc\u83b7\u53d6\u63a5\u53e3\u7684\u4ee3\u7406\u5bf9\u8c61,\u91c7\u7528jdk\u52a8\u6001\u4ee3\u7406\u5c06\u539f\u6709\u7684\u63a5\u53e3\u8fdb\u884c\u4e86\u589e\u5f3a<\/span><\/code><code><span class=\"code-snippet_outer\">            XxxBizRateLimiterService  xxxBizRateLimiterService = (XxxBizRateLimiterService ) bizRateLimiterService.getBizRateLimiterProxy(0, xxxBizRateLimiterService , XxxBizRateLimiterService .class, timeWindowKey);<\/span><\/code><code><span class=\"code-snippet_outer\">            # \u8c03\u7528\u76ee\u6807\u65b9\u6cd5\u76f8\u5f53\u4e8e\u505a\u4e86\u4e24\u5c42\u4ee3\u7406,\u5916\u5c42\u662fjdk\u4ee3\u7406\u589e\u5f3a\u5b9e\u73b0\u4ee4\u724c\u6876\u9650\u6d41 + \u6ed1\u52a8\u7a97\u53e3\u9650\u6d41<\/span><\/code><code><span class=\"code-snippet_outer\">            # \u5185\u5c42\u662faop\u7684\u52a8\u6001\u4ee3\u7406,\u81ea\u5b9a\u4e49\u4e86\u4e00\u4e2a\u6ce8\u89e3,\u589e\u5f3a\u5b9e\u73b0\u4e86\u5206\u5e03\u5f0f\u9501\u548c\u624b\u52a8\u63a7\u5236\u4e8b\u52a1\u8fd8\u6709\u5176\u5b83\u529f\u80fd\u589e\u5f3a<\/span><\/code><code><span class=\"code-snippet_outer\">            return xxxBizRateLimiterService .testLimit(\"testLimit\", \"6666\");<\/span><\/code><code><span class=\"code-snippet_outer\">        }<\/span><\/code><code><span class=\"code-snippet_outer\">        # \u8fd9\u91cc\u662f\u6ca1\u6709\u5f00\u542f\u4ee4\u724c\u6876\u9650\u6d41 + \u6ed1\u52a8\u7a97\u53e3\u9650\u6d41\u9650\u6d41\u8d70\u7684\u662faop\u6ce8\u89e3\u5207\u9762\u6216\u8005\u662f\u6ca1\u6709aop\u6ce8\u89e3\u5207\u9762\u7684\u539f\u5bf9\u8c61\u7684\u65b9\u6cd5<\/span><\/code><code><span class=\"code-snippet_outer\">        return xxxBizRateLimiterService .testLimit(\"testLimit\", \"6666\");<\/span><\/code><code><span class=\"code-snippet_outer\">    }<\/span><\/code><code><span class=\"code-snippet_outer\">}<\/span><\/code><code><span class=\"code-snippet_outer\">```<\/span><\/code><code><span class=\"code-snippet_outer\">6.\u603b\u7ed3<\/span><\/code><code><span class=\"code-snippet_outer\">\u672c\u6765\u53ef\u4ee5\u5c06\u9650\u6d41\u7684\u903b\u8f91\u878d\u5408\u5230\u6ce8\u89e3\u4e2d\uff0c\u4f46\u662f\u6ce8\u89e3\u4e2d\u7684\u903b\u8f91\u5d4c\u5957\u53c8\u6bd4\u8f83\u591a\uff0c\u6240\u4ee5\u4e0d\u53bb\u6539\u539f\u6709\u6ce8\u89e3\u7684\u903b\u8f91\uff0c\u5f88\u5bb9\u6613\u6539\u51fabug\u7684\uff0c<\/span><\/code><code><span class=\"code-snippet_outer\">\u6240\u4ee5\u91c7\u7528jdk\u52a8\u6001\u4ee3\u7406\u6765\u505a\u4e86\u62d3\u5c55\uff0c\u8ba9ratelimiter\u7684\u4ee4\u724c\u6876\u9650\u6d41 + \u6ed1\u52a8\u7a97\u53e3\u9650\u6d41 \u548c @BizIdempotentManualCtrlTransLimiterAnno\u6ce8\u89e3\u5b8c\u7f8e\u7ed3\u5408\u4f7f\u7528,\u672c\u8d28\u4e0a\u662f\u505a\u4e86\u4e24\u5c42\u4ee3\u7406\uff08\u5916\u5c42jdk\u52a8\u6001\u4ee3\u7406 + \u5185\u5c42\u7684aop\u81ea\u5b9a\u4e49\u6ce8\u89e3\u5207\u9762\u62e6\u622a\u4ee3\u7406\uff09\uff0c<\/span><\/code><code><span class=\"code-snippet_outer\">\u53ef\u4ee5\u6839\u636e\u914d\u7f6e\u7075\u6d3b\u8bbe\u7f6e\u53c2\u6570\u7b80\u5316\u91cd\u590d\u4ee3\u7801\uff0c\u4e0d\u7528\u6bcf\u4e2a\u9879\u76ee\u90fd\u53bb\u62f7\u8d1d\u91cd\u590d\u7684\u4ee3\u7801\uff0c\u53ea\u9700\u8981\u5f15\u5165\u4e00\u4e2a\u4f9d\u8d56\uff0c\u6839\u636e\u7ea6\u5b9a\u7684\u914d\u7f6e\u5728\u5229\u7528springBoot\u7684\u81ea\u52a8\u88c5\u914d\u80fd\u529b\u5c31\u53ef\u4ee5\u6d88\u9664\u91cd\u590d\u4ee3\u7801\uff0c\u8ba9\u4ee3\u7801\u5316\u7e41\u4e3a\u7b80\uff0c\u4e1a\u52a1\u4ee3\u7801\u5199\u7684\u66f4\u52a0\u5e05\u66f4\u5065\u58ee\uff0c\u66f4\u52a0\u4f18\u96c5\u66f4\u52a0\u5e72\u51c0\u66f4\u52a0\u6574\u6d01\u66f4\u52a0\u7f8e\u89c2\uff0c\u53ef\u62d3\u5c55\u6027\u3001\u53ef\u590d\u7528\u6027\u548c\u53ef\u7ef4\u62a4\u6027\u5f97\u5230\u975e\u5e38\u5927\u7684\u63d0\u5347\u3002<\/span><\/code><code><span class=\"code-snippet_outer\">7.\u529f\u80fd\u7b80\u4ecb<\/span><\/code><code><span class=\"code-snippet_outer\">\u9650\u6d41ratelimiter\u4e0e\u6ce8\u89e3\u5b9e\u73b0\u5206\u5e03\u5f0f\u9501\u3001\u624b\u52a8\u63a7\u5236\u4e8b\u52a1\u76f8\u7ed3\u5408\u7684starter\u542f\u52a8\u5668\uff0c\u53ef\u4ee5\u5b9e\u73b0\u63a5\u53e3\u603b\u4f53\u9650\u6d41\u3001\u6ed1\u52a8\u7a97\u53e3\u9650\u6d41 + \u5206\u5e03\u5f0f\u9501(\u9632\u6b62\u591a\u6b21\u70b9\u51fb)\uff0c\u624b\u52a8\u63a7\u5236\u4e8b\u52a1\u591a\u8868\u64cd\u4f5c\u5f02\u5e38\u53ef\u4ee5\u81ea\u52a8\u56de\u6eda\u4e8b\u52a1\uff0c\u4fdd\u8bc1\u591a\u8868\u6570\u636e\u4e00\u81f4\u6027<\/span><\/code><\/pre>\n<\/section>\n<p style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: start;\">\n<h1 style=\"break-after: avoid-page; break-inside: avoid; orphans: 4; font-size: 2.25em; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.2; cursor: text; border-bottom: 1px solid #eeeeee; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; letter-spacing: normal; text-align: start;\">4.\u603b\u7ed3<\/h1>\n<section style=\"line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; color: #333333; font-family: 'Open Sans', 'Clear Sans', 'Helvetica Neue', Helvetica, Arial, 'Segoe UI Emoji', sans-serif; font-size: 16px; letter-spacing: normal; text-align: justify; text-indent: 2em;\">\u901a\u8fc7\u5b9e\u73b0\u4e86\u8fd9\u4e2a\u542f\u52a8\u5668\u5c31\u53ef\u4ee5\u5c06\u4e4b\u524d\u641e\u7684\u4e1c\u897f\u5b8c\u7f8e\u7ed3\u5408\u8d77\u6765\u4f7f\u7528\uff0c\u5e0c\u671b\u6211\u7684\u5206\u4eab\u5bf9\u4f60\u6709\u6240\u542f\u53d1\u548c\u5e2e\u52a9\uff0c\u8bf7\u4e00\u952e\u4e09\u8fde\uff0c\u4e48\u4e48\u4e48\u54d2\uff01<\/section>\n<p style=\"display: none;\">\n<blockquote><p>\u672c\u7bc7\u6587\u7ae0\u6765\u6e90\u4e8e\u5fae\u4fe1\u516c\u4f17\u53f7: Java\u5927\u98de\u54e5<\/p><\/blockquote>\n<\/div>\n","raw":"","protected":false},"excerpt":{"rendered":"<p>1.\u524d\u8a00 \u7531\u4e8e\u4e4b\u524d\u5199\u5982\u4e0b\u4e24\u7bc7\u6587\u7ae0\uff1a \u81ea\u5b9a\u4e49\u6ce8\u89e3\u5b9e\u73b0Redis\u5206\u5e03\u5f0f\u9501\u3001\u624b\u52a8\u63a7\u5236\u4e8b\u52a1\u548c\u6839\u636e\u5f02\u5e38\u540d\u5b57\u6216\u5185\u5bb9\u9650\u6d41\u7684\u4e09\u5408\u4e00\u7684\u529f\u80fd http &#8230;<\/p>\n","protected":false},"author":1,"featured_media":5864,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-5880","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring-boot"],"post_thumbnail_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222922491-150x150.jpeg","content_first_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222935195.png","post_medium_image_300":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222922491-300x128.jpeg","post_thumbnail_image_624":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222922491-1024x436.jpeg","post_frist_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222935195.png","post_medium_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222922491-300x128.jpeg","post_large_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222922491-1024x436.jpeg","post_full_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222922491.jpeg","post_all_images":[{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222935195.png","id":"image0"},{"imagesurl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2024\/08\/20240801222935195.png","id":"image1"}],"videoAdId":"","listAd":"0","listAdId":"","listAdEvery":6,"total_comments":0,"category_name":"Spring Boot","post_date":"2024-08-01","like_count":"0","praiseWord":"\u9f13\u52b1","copyright_state":"","excitationAd":"0","rewardedVideoAdId":"","detailAdId":"","detailAd":"0","enterpriseMinapp":"0","audios":[],"postImageUrl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230519082947553.jpg","avatarurls":[],"related_posts":null,"pageviews":261,"next_post_id":5199,"next_post_title":"SpringBoot + \u865a\u62df\u7ebf\u7a0b\uff0c\u6027\u80fd\u70b8\u88c2\uff01","previous_post_id":4833,"previous_post_title":"\u8d85\u5f3a\u7684SpringBoot\u5e94\u7528\u542f\u52a8\u6027\u80fd\u5206\u6790\u5de5\u5177\uff1aSpring-Startup-Analyzer\uff01","_links":{"self":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/5880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/comments?post=5880"}],"version-history":[{"count":2,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/5880\/revisions"}],"predecessor-version":[{"id":6419,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/5880\/revisions\/6419"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/media\/5864"}],"wp:attachment":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/media?parent=5880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/categories?post=5880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/tags?post=5880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}