{"id":2408,"date":"2025-08-30T16:29:49","date_gmt":"2025-08-30T08:29:49","guid":{"rendered":"https:\/\/note.ui11.cc\/?p=2408"},"modified":"2025-09-05T20:06:33","modified_gmt":"2025-09-05T12:06:33","slug":"ai%e9%a1%b9%e7%9b%ae%ef%bc%9a","status":"publish","type":"post","link":"https:\/\/note.ui11.cc\/index.php\/2025\/08\/30\/ai%e9%a1%b9%e7%9b%ae%ef%bc%9a\/","title":{"rendered":"Ai\u9879\u76ee\uff1a"},"content":{"rendered":"\n<p>\u9879\u76ee\u5168\u5c40\u4f7f\u7528Kni4j\u8c03\u8bd5\u5de5\u5177<\/p>\n\n\n\n<p>\u9996\u5148Auth\u6a21\u5757\uff1a<\/p>\n\n\n\n<p>\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u767b\u5f55<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-229.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"720\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-229.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2399\" style=\"width:490px;height:auto\"  sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e09\u4e2a\u7aef\uff1a\u5c0f\u7a0b\u5e8f\u7aef\uff0c\u5f00\u53d1\u8005\u670d\u52a1\u5668\u7aef\uff0c\u5fae\u4fe1\u63a5\u53e3\u670d\u52a1\u7aef<\/p>\n\n\n\n<p>\u6211\u4eec\u9996\u5148\u901a\u8fc7wx.login\uff08\uff09\uff08\u5fae\u4fe1\u5e73\u53f0\u96c6\u6210\u76f4\u63a5\u8c03\u7528\u5373\u53ef\uff09\u83b7\u53d6Code<\/p>\n\n\n\n<p>\u62ff\u5230code\u4e4b\u540e\u901a\u8fc7wx.request()\u53d1\u9001code\u5230\u4f60\u7684\u5f00\u53d1\u8005\u670d\u52a1\u5668\u540e\u7aef\uff0c\u540e\u7aef<\/p>\n\n\n\n<p>\u53d1\u9001appid+appsecret+code\u5230\u5fae\u4fe1\u63a5\u53e3\u670d\u52a1\uff0c\u5fae\u4fe1\u63a5\u53e3\u670d\u52a1\u9a8c\u8bc1\u6210\u529f\u540e<\/p>\n\n\n\n<p>\u5fae\u4fe1\u5c06\u8fd4\u56de\u4ee5\u4e0b\u4fe1\u606f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"openid\": \"o6_bmjrPTlm6_2sgVt7hMZOPfL2M\",  \/\/ \u7528\u6237\u552f\u4e00\u6807\u8bc6\uff08\u5fae\u4fe1\u5f00\u653e\u5e73\u53f0\u4e0b\u552f\u4e00\uff0copenid \u662f\u7531\u5fae\u4fe1\u5b98\u65b9\u63d0\u4f9b\u7684\uff09\n  \"session_key\": \"tiihtNczf5v6AKRyjwEUhQ==\", \/\/ \u4f1a\u8bdd\u5bc6\u94a5\uff08\u7528\u4e8e\u89e3\u5bc6\u7528\u6237\u654f\u611f\u4fe1\u606f\uff09\n  \"unionid\": \"o6_bmasdasdsad6_2sgVt7hMZOPfL\" \/\/ \u5f53\u7528\u6237\u7ed1\u5b9a\u4e86\u5fae\u4fe1\u5f00\u653e\u5e73\u53f0\u8d26\u53f7\u65f6\u8fd4\u56de\n}<\/code><\/pre>\n\n\n\n<p>\u6211\u4eec\u5c06<strong>openid <\/strong>\u5f80\u6570\u636e\u5e93\u91cc\u4e00\u4fdd\u5b58\uff0c\u751f\u6210id\uff0c\u7136\u540e\u6839\u636e\u4e3b\u952eid\u4e5f\u597d\uff0c\u6839\u636e<strong>openid<\/strong>\u4e5f\u597d\uff0c\u751f\u6210token\u8fd4\u56de\u524d\u7aef\uff0c\u7136\u540e\u524d\u7aef\u628atoken\u5b58\u5165storage\uff0c\u7136\u540e\u7528\u6237\u5728\u6d3b\u52a8\u4e2d\u5411\u540e\u7aef\u53d1\u9001\u8bf7\u6c42\u65f6\uff0c\u5fc5\u987b\u643a\u5e26\u6b64token\u5373\u53ef\uff08\u540e\u7aef\u53ef\u4ee5\u6821\u9a8c\uff09\uff0c\u6210\u529f\u540e\u8fd4\u56de\u4e1a\u52a1\u6570\u636e\u5c31\u884c\u4e86\uff01<\/p>\n\n\n\n<p>\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u767b\u5f55\u4ee3\u7801\uff1a<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import $http from '.\/utils\/request.js'\nimport { token } from '.\/api\/auth.js'\nimport Storage from '.\/utils\/storage.js'\nApp({\n  $http,\n  onLaunch() {   \/\/\u9879\u76ee\u542f\u52a8\u9ed8\u8ba4\u4f1a\u6267\u884c\n    console.log('\u5c0f\u7a0b\u5e8f\u542f\u52a8')\n    \/\/ \u5c55\u793a\u672c\u5730\u5b58\u50a8\u80fd\u529b\n    const logs = Storage.getLogs() || &#91;]\n    logs.unshift(Date.now())\n    Storage.setLogs(logs)\n\n    \/\/ \u767b\u5f55\n    wx.login({  \/\/\u8c03\u7528\u5fae\u4fe1\u63d0\u4f9b\u7684wx.login\n      success: async res =&gt; {\n        console.log('wx.login \u6210\u529f\uff0c\u83b7\u53d6\u5230 code:', res.code)\/\/\u4eceres\u4e2d\u62ff\u5230code\n        \/\/ \u53d1\u9001 res.code \u5230\u540e\u53f0\u6362\u53d6 openId, sessionKey, unionId\n        try {\n          let loginRes = await token(res.code);\/\/\u62ff\u5230code\u4e4b\u540e\u5411\u672c\u5730\u53d1\u8d77\u8bf7\u6c42\n          console.log('token \u8bf7\u6c42\u54cd\u5e94:', loginRes)\/\/\u540e\u7aef\u8fd4\u56deloginRes\n          if(loginRes &amp;&amp; loginRes.code === 200){\n            Storage.setToken(loginRes.data.tokenName, loginRes.data.tokenValue)\/\/\u628a\u540e\u7aef\u8fd4\u56de\u7684token\u4fe1\u606f\u4fdd\u5b58\u5230Storage\uff0c\u540e\u671f\u8bf7\u6c42\u90fd\u8981\u643a\u5e26\n            console.log('token \u5b58\u50a8\u6210\u529f')\n          } else {\n            console.error('token \u8bf7\u6c42\u5931\u8d25:', loginRes)\n          }\n        } catch (error) {\n          console.error('token \u8bf7\u6c42\u5f02\u5e38:', error)\n        }\n      },\n      fail: err =&gt; {\n        console.error('wx.login \u5931\u8d25:', err)\n      }\n    })\n  },\n  globalData: {\n    userInfo: null\n  }\n})\n<\/code><\/pre>\n\n\n\n<p>\u7531\u4e8e\u5fae\u4fe1\u5728\u83b7\u53d6token\u7684\u65f6\u5019\u8981\u7528get\u8bf7\u6c42\uff0cget\u8bf7\u6c42\u8981\u8ddf\u53c2\u6570\u5fc5\u987b\u7528?\u52a0&amp;\u62fc\u63a5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"openid\": \"o6_bmjrPTlm6_2sgVt7hMZOPfL2M\",  \/\/ \u7528\u6237\u552f\u4e00\u6807\u8bc6\uff08\u5fae\u4fe1\u5f00\u653e\u5e73\u53f0\u4e0b\u552f\u4e00\uff0copenid \u662f\u7531\u5fae\u4fe1\u5b98\u65b9\u63d0\u4f9b\u7684\uff09\n  \"session_key\": \"tiihtNczf5v6AKRyjwEUhQ==\", \/\/ \u4f1a\u8bdd\u5bc6\u94a5\uff08\u7528\u4e8e\u89e3\u5bc6\u7528\u6237\u654f\u611f\u4fe1\u606f\uff09\n  \"unionid\": \"o6_bmasdasdsad6_2sgVt7hMZOPfL\" \/\/ \u5f53\u7528\u6237\u7ed1\u5b9a\u4e86\u5fae\u4fe1\u5f00\u653e\u5e73\u53f0\u8d26\u53f7\u65f6\u8fd4\u56de\n}<\/code><\/pre>\n\n\n\n<p>\u62ff\u5230\u5fae\u4fe1\u8fd4\u56de\u7684\u6570\u636e\u540e\u53ef\u4ee5\u8fdb\u884c\u6301\u4e45\u5316\uff0c\u7136\u540e\u9881\u53d1token\uff0c\u8fd9\u91cc\u7528\u7684\u662fSa-toekn<\/p>\n\n\n\n<p>\u5b98\u7f51\uff1a<a href=\"https:\/\/sa-token.cc\/doc.html#\/up\/disable\">https:\/\/sa-token.cc\/doc.html#\/up\/disable<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sa-token:\n  # token \u540d\u79f0\uff08\u540c\u65f6\u4e5f\u662f cookie \u540d\u79f0\uff09\n  token-name: aimin-auth-token\n  # token \u6709\u6548\u671f\uff08\u5355\u4f4d\uff1a\u79d2\uff09 \u9ed8\u8ba430\u5929\uff0c-1 \u4ee3\u8868\u6c38\u4e45\u6709\u6548\n  timeout: 2592000\n  # token \u6700\u4f4e\u6d3b\u8dc3\u9891\u7387\uff08\u5355\u4f4d\uff1a\u79d2\uff09\uff0c\u5982\u679c token \u8d85\u8fc7\u6b64\u65f6\u95f4\u6ca1\u6709\u8bbf\u95ee\u7cfb\u7edf\u5c31\u4f1a\u88ab\u51bb\u7ed3\uff0c\u9ed8\u8ba4-1 \u4ee3\u8868\u4e0d\u9650\u5236\uff0c\u6c38\u4e0d\u51bb\u7ed3\n  active-timeout: -1\n  # \u662f\u5426\u5141\u8bb8\u540c\u4e00\u8d26\u53f7\u591a\u5730\u540c\u65f6\u767b\u5f55 \uff08\u4e3a true \u65f6\u5141\u8bb8\u4e00\u8d77\u767b\u5f55, \u4e3a false \u65f6\u65b0\u767b\u5f55\u6324\u6389\u65e7\u767b\u5f55\uff09\n  is-concurrent: true\n  # \u5728\u591a\u4eba\u767b\u5f55\u540c\u4e00\u8d26\u53f7\u65f6\uff0c\u662f\u5426\u5171\u7528\u4e00\u4e2a token \uff08\u4e3a true \u65f6\u6240\u6709\u767b\u5f55\u5171\u7528\u4e00\u4e2a token, \u4e3a false \u65f6\u6bcf\u6b21\u767b\u5f55\u65b0\u5efa\u4e00\u4e2a token\uff09\n  is-share: false\n  # token \u98ce\u683c\uff08\u9ed8\u8ba4\u53ef\u53d6\u503c\uff1auuid\u3001simple-uuid\u3001random-32\u3001random-64\u3001random-128\u3001tik\uff09\n  token-style: uuid\n  # \u662f\u5426\u8f93\u51fa\u64cd\u4f5c\u65e5\u5fd7\n  is-log: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\n\u914d\u7f6e\u7c7b\uff1a\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>@Configuration\npublic class SaTokenConfigure {\n\n    \/**\n     * \u6ce8\u518c &#91;Sa-Token\u5168\u5c40\u8fc7\u6ee4\u5668]\n     *\n     *\/\n    @Bean\n    public SaServletFilter getSaServletFilter() {\n        return new SaServletFilter()\n                \/\/ \u6307\u5b9a \u62e6\u622a\u8def\u7531 \u4e0e \u653e\u884c\u8def\u7531\n                .addInclude(\"\/**\")\n\/\/                .addExclude(\"\/test\/**\")\n\n                .addExclude(\"\/public\/wx\/token\")\n                .addExclude(\"\/test\/**\")\n                .addExclude(\"\/doc.html\/**\")\n                \/\/ \u8ba4\u8bc1\u51fd\u6570: \u6bcf\u6b21\u8bf7\u6c42\u6267\u884c\n                .setAuth(obj -&gt; {\n                    System.out.println(\"---------- \u8fdb\u5165Sa-Token\u5168\u5c40\u8ba4\u8bc1 -----------\");\n\n                    \/\/ \u767b\u5f55\u8ba4\u8bc1 -- \u62e6\u622a\u6240\u6709\u8def\u7531\uff0c\u5e76\u6392\u9664\/user\/doLogin \u7528\u4e8e\u5f00\u653e\u767b\u5f55\n                    SaRouter.match(\"\/**\", \"\/public\/wx\/token\", () -&gt; StpUtil.checkLogin());\n\n                    \/\/ \u66f4\u591a\u62e6\u622a\u5904\u7406\u65b9\u5f0f\uff0c\u8bf7\u53c2\u8003\u201c\u8def\u7531\u62e6\u622a\u5f0f\u9274\u6743\u201d\u7ae0\u8282 *\/\n                })\n                \/\/ \u5f02\u5e38\u5904\u7406\u51fd\u6570\uff1a\u6bcf\u6b21\u8ba4\u8bc1\u51fd\u6570\u53d1\u751f\u5f02\u5e38\u65f6\u6267\u884c\u6b64\u51fd\u6570\n                .setError(e -&gt; {\n                    System.out.println(\"---------- \u8fdb\u5165Sa-Token\u5f02\u5e38\u5904\u7406 -----------\");\n                    return SaResult.error(e.getMessage());\n                })\n                \/\/ \u524d\u7f6e\u51fd\u6570\uff1a\u5728\u6bcf\u6b21\u8ba4\u8bc1\u51fd\u6570\u4e4b\u524d\u6267\u884c\uff08BeforeAuth \u4e0d\u53d7 includeList \u4e0e excludeList \u7684\u9650\u5236\uff0c\u6240\u6709\u8bf7\u6c42\u90fd\u4f1a\u8fdb\u5165\uff09\n                .setBeforeAuth(r -&gt; {\n                    \/\/ ---------- \u8bbe\u7f6e\u4e00\u4e9b\u5b89\u5168\u54cd\u5e94\u5934 ----------\u5904\u7406\u8de8\u57df\u95ee\u9898\n                    SaHolder.getResponse()\n                            \/\/ \u670d\u52a1\u5668\u540d\u79f0\n                            .setServer(\"sa-server\")\n                            \/\/ \u662f\u5426\u53ef\u4ee5\u5728iframe\u663e\u793a\u89c6\u56fe\uff1a DENY=\u4e0d\u53ef\u4ee5 | SAMEORIGIN=\u540c\u57df\u4e0b\u53ef\u4ee5 | ALLOW-FROM uri=\u6307\u5b9a\u57df\u540d\u4e0b\u53ef\u4ee5\n                            .setHeader(\"X-Frame-Options\", \"SAMEORIGIN\")\n                            \/\/ \u662f\u5426\u542f\u7528\u6d4f\u89c8\u5668\u9ed8\u8ba4XSS\u9632\u62a4\uff1a 0=\u7981\u7528 | 1=\u542f\u7528 | 1; mode=block \u542f\u7528, \u5e76\u5728\u68c0\u67e5\u5230XSS\u653b\u51fb\u65f6\uff0c\u505c\u6b62\u6e32\u67d3\u9875\u9762\n                            .setHeader(\"X-XSS-Protection\", \"1; mode=block\")\n                            \/\/ \u7981\u7528\u6d4f\u89c8\u5668\u5185\u5bb9\u55c5\u63a2\n                            .setHeader(\"X-Content-Type-Options\", \"nosniff\")\n                    ;\n                })\n                ;\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>\u8fd9\u91cc\u6211\u4eec\u53ea\u9700\u8981\u653e\u884c\/public\/wx\/token\u5fae\u4fe1\u767b\u5f55\u63a5\u53e3\uff0c\u767b\u5f55\u6210\u529f\u540e\u9881\u53d1token\uff0c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@RestController\n@RequestMapping(\"\/public\/wx\")\n@RequiredArgsConstructor\npublic class Wxcontroller {\n    private final WxService wxService;\n    @RequestMapping(\"\/token\")\n\/\/    \u5fae\u4fe1\u53d1\u9001\u8fc7\u6765\u4e00\u4e2acode\n    public Result token(String code)\n    {\n        Jscode2SessionResult jscode2SessionResult = wxService.wxLogin(code);\n\/\/        \u5047\u8bbe\u6570\u636e\u5e93\u5b58\u50a8\u6210\u529f\u62ff\u5230id\u4ee3\u8868\u767b\u5f55\u6210\u529f\n        StpUtil.login(1);\/\/\u4e3a\u7528\u6237\u5206\u914d\u4e00\u4e2a token \u5e76\u5efa\u7acb\u4f1a\u8bdd\n\/\/        \u83b7\u53d6token\u4fe1\u606f\n        SaTokenInfo tokenInfo = StpUtil.getTokenInfo();\n        String tokenName = tokenInfo.getTokenName();\n        String tokenValue = tokenInfo.getTokenValue();\n        return   Result.success(tokenInfo);\n    }<\/code><\/pre>\n\n\n\n<p>SaTokenInfo tokenInfo = StpUtil.getTokenInfo();<br>        String tokenName = tokenInfo.getTokenName();<br>        String tokenValue = tokenInfo.getTokenValue();<\/p>\n\n\n\n<p>\u8fd9\u4e00\u90e8\u5206\uff0c\u62ff\u5230name\u548c\u503c\u5c31\u53ef\u4ee5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> @GetMapping(\"\/check\")\n    public  String userJoin2() {\n        try {\n            StpUtil.checkLogin();\n        } catch (Exception e) {\n            return \"err:\u8bf7\u767b\u5f55\uff01\";\n        }\n        return \"success\";\n    }<\/code><\/pre>\n\n\n\n<p>\u8fd9\u662f\u6d4b\u8bd5\u4ee3\u7801\uff0cSa-token\u56de\u53bbcoookie\uff0cheader\u7b49\u53bb\u627etoken\uff0c\u627e\u5230\u540e\u6821\u9a8c\uff0c\u5982\u679c\u4e0d\u901a\u8fc7\u5219\u62e6\u622a<\/p>\n\n\n\n<p>\u6d4b\u8bd5\u7528\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> public Result token(String code)\n    {\n        Jscode2SessionResult jscode2SessionResult = wxService.wxLogin(code);\n\/\/        \u5047\u8bbe\u6570\u636e\u5e93\u5b58\u50a8\u6210\u529f\u62ff\u5230id\u4ee3\u8868\u767b\u5f55\u6210\u529f\n        StpUtil.login(1);\/\/\u4e3a\u7528\u6237\u5206\u914d\u4e00\u4e2a token \u5e76\u5efa\u7acb\u4f1a\u8bdd\n\/\/        \u83b7\u53d6token\u4fe1\u606f\n        SaTokenInfo tokenInfo = StpUtil.getTokenInfo();\n        String tokenName = tokenInfo.getTokenName();\n        String tokenValue = tokenInfo.getTokenValue();\n        return   Result.success(tokenInfo);<\/code><\/pre>\n\n\n\n<p>\u8fd9\u4e2a\u5730\u65b9StpUtil\u7684getTokenInfo\u662f\u81ea\u52a8\u751f\u6210\u7684\uff0ctokenInfo\u91cc\u9762\u5305\u542bTokenName\u548cTokenValue<\/p>\n\n\n\n<p><strong>AI\u6a21\u5757\uff1a<\/strong><\/p>\n\n\n\n<p>\u9996\u5148\u6253\u5f00SpringAi\u5b98\u7f51\uff1a<a href=\"https:\/\/docs.spring.io\/spring-ai\/reference\/api\/chat\/deepseek-chat.html\">https:\/\/docs.spring.io\/spring-ai\/reference\/api\/chat\/deepseek-chat.html<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--\u628a\u8fd9\u4e2a\u6587\u4ef6\u653e\u5165\u4e4b\u540e\u7528SpringAi\u5c31\u4e0d\u7528\u52a0\u7248\u672c\u53f7\u4e86,\u5b83\u672c\u8eab\u4e0d\u4e0b\u8f7d\u4efb\u4f55\u4e1c\u897f--&gt;\n    &lt;dependencyManagement&gt;\n        &lt;dependencies&gt;\n            &lt;dependency&gt;\n                &lt;groupId&gt;org.springframework.ai&lt;\/groupId&gt;\n                &lt;artifactId&gt;spring-ai-bom&lt;\/artifactId&gt;\n                &lt;version&gt;1.0.0&lt;\/version&gt;\n                &lt;type&gt;pom&lt;\/type&gt;\n                &lt;scope&gt;import&lt;\/scope&gt;\n            &lt;\/dependency&gt;\n        &lt;\/dependencies&gt;\n    &lt;\/dependencyManagement&gt;<\/code><\/pre>\n\n\n\n<p>\u4e4b\u540e\u6211\u4eec\u5982\u679c\u9009\u62e9deepseek\u6a21\u578b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.ai&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-ai-starter-model-deepseek&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;<\/code><\/pre>\n\n\n\n<p>\u8fd9\u91cc\u4e0d\u7528\u52a0\u7248\u672c\u53f7<\/p>\n\n\n\n<p>\u63a5\u7740\u6211\u4eec\u53bb\u914d\u7f6e\u4e00\u4e0b\u79d8\u94a5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  ai:\n    deepseek:\n      api-key: *******************\n      chat:\n        options:\n          model: deepseek-chat<\/code><\/pre>\n\n\n\n<p>\u5b98\u65b9\u6f14\u793aController\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@RestController\npublic class ChatController {\n\n    private final DeepSeekChatModel chatModel;\n\n    @Autowired\n    public ChatController(DeepSeekChatModel chatModel) {\n        this.chatModel = chatModel;\n    }\n\n    @GetMapping(\"\/ai\/generate\")\n    public Map generate(@RequestParam(value = \"message\", defaultValue = \"Tell me a joke\") String message) {\n        return Map.of(\"generation\", chatModel.call(message));\n    }\n\n    @GetMapping(\"\/ai\/generateStream\")\n\tpublic Flux&lt;ChatResponse&gt; generateStream(@RequestParam(value = \"message\", defaultValue = \"Tell me a joke\") String message) {\n        var prompt = new Prompt(new UserMessage(message));\n        return chatModel.stream(prompt);\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u4e00\u4e2a\u662f\u6d41\u5f0f\u8f93\u51fa\uff0c\u4e00\u4e2a\u662f\u4e00\u95ee\u4e00\u7b54<\/p>\n\n\n\n<p>\u5176\u4e2dPrompt\u662f\u63d0\u793a\u8bcd<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-230-1024x325.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"325\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-230-1024x325.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2413\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6d41\u5f0f\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/    deepseek\u6d41\u5f0f\u8f93\u51fa\n    @GetMapping(\"\/ai\/generateStream2\")\n    public String deepSeekReasonerExample() {\n        DeepSeekChatOptions promptOptions = DeepSeekChatOptions.builder()\n                .model(DeepSeekApi.ChatModel.DEEPSEEK_REASONER.getValue())\n                .build();\n        Prompt prompt = new Prompt(\"\u7528\u4e2d\u6587\u56de\u590d\uff0c9.11 and 9.8, which is greater?\", promptOptions);\n        ChatResponse response = chatModel.call(prompt);\n\n        \/\/ Get the CoT content generated by deepseek-reasoner, only available when using deepseek-reasoner model\n        DeepSeekAssistantMessage deepSeekAssistantMessage = (DeepSeekAssistantMessage) response.getResult().getOutput();\n        String reasoningContent = deepSeekAssistantMessage.getReasoningContent();\n        String text = deepSeekAssistantMessage.getText();\n        return text ;\n    }<\/code><\/pre>\n\n\n\n<p>\u5982\u679c\u4ec5\u4ec5\u4f7f\u7528\u5bf9\u8bdd\u7b49\u4e00\u4e9b\u7b80\u5355\u7684\u529f\u80fd\uff0c\u90a3\u4e48private final DeepSeekChatModel chatModel;<\/p>\n\n\n\n<p>\u591f\u4e86\uff0c\u4f46\u662f\u5982\u679c\u8981\u5b9e\u73b0\u5bf9\u8bdd\uff0c\u4f1a\u8bdd\u8bb0\u5fc6\u7b49\u9ad8\u7ea7\u529f\u80fd\uff0c\u90a3\u4e48\u5c31\u9700\u8981\u7528<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-231-1024x590.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"590\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-231-1024x590.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2414\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fd9\u4e2aAPI\u53ef\u4ee5\u58f0\u660e\u591a\u4e2a\u6a21\u578b\uff0c\u5e76\u4e14\u53ef\u4ee5\u5b9e\u73b0\u4f1a\u8bdd\u8bb0\u5fc6\u529f\u80fd<\/p>\n\n\n\n<p>\u5b98\u65b9\u4ee3\u7801\uff1a<\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ChatMemory chatMemory = ... \/\/ Initialize your chat memory store\nVectorStore vectorStore = ... \/\/ Initialize your vector store\n\nvar chatClient = ChatClient.builder(chatModel)\n    .defaultAdvisors(\n        MessageChatMemoryAdvisor.builder(chatMemory).build(), \/\/ chat-memory advisor\n        QuestionAnswerAdvisor.builder(vectorStore).build()    \/\/ RAG advisor\n    )\n    .build();\n\nvar conversationId = \"678\";\n\nString response = this.chatClient.prompt()\n    \/\/ Set advisor parameters at runtime\n    .advisors(advisor -&gt; advisor.param(ChatMemory.CONVERSATION_ID, conversationId))\n    .user(userText)\n    .call()\n\t.content();<\/code><\/pre>\n\n\n\n<p>\u518d\u6b21\u6211\u4eec\u90e8\u7f72ollama\u3002\u4e0b\u8f7d\u597d\u6a21\u578b\u540e\uff1a<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-232-1024x387.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-232-1024x387.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2415\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u76f4\u63a5\u542f\u52a8\uff0c\u547d\u4ee4 ollama run \u6a21\u578b\u540d\u79f0<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-233-1024x565.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"565\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-233-1024x565.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2416\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6211\u4eec\u5728\u914d\u7f6e\u7c7b\u91cc\u58f0\u660e\u8fd9\u4e2amoudle\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-234-1024x483.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"483\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-234-1024x483.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2417\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>@Configuration\n@RequiredArgsConstructor\npublic class ChatClientConfig {\n    \/\/  \u521b\u5efa\u4e00\u4e2a DeepSeekChatModel \u5bf9\u8c61\uff0c\u5e76\u6ce8\u5165\u5230\u5bb9\u5668\u4e2d\n\/\/        @Bean\n\/\/        public ChatClient deepSeekChatClient(DeepSeekChatModel chatModel) {\n\/\/            return ChatClient.create(chatModel);\n\/\/        }\n    private final ChatStorageMemory chatMemory;\n    @Bean\n    public ChatClient OllamadeepSeekChatClient(OllamaChatModel chatModel) {\n        \/\/\u57fa\u4e8e\u5185\u5b58\u5b9e\u73b0\u804a\u5929\u8bb0\u5fc6\n\/\/        ChatMemory ChatMemoryemory = MessageWindowChatMemory.builder().build();\n        MessageChatMemoryAdvisor messageChatMemoryAdvisor = MessageChatMemoryAdvisor.builder(chatMemory).build();\n        ChatClient chatClient = ChatClient.builder(chatModel)\n                .defaultAdvisors(messageChatMemoryAdvisor)\n                .build();\n        return chatClient;\n      }\n\n    }<\/code><\/pre>\n\n\n\n<p>\u5bf9\u5e94controller\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@GetMapping(\"\/ai\")\n    public String generate(@RequestParam(value = \"message\") String message) {\n    \/\/\u5f97\u5230\u7528\u6237ID\uff0c\u8fd9\u91cc\u5047\u8bbe\u4e3a1\n        return  chatClient.prompt(message).advisors(advisor -&gt; advisor.param(ChatMemory.CONVERSATION_ID, 1))\n                .call()\/\/\u8c03\u7528\u6a21\u578b\n                .content();\/\/\u8fd4\u56de\u5185\u5bb9\n\/\/        return Map.of(\"generation\", chatModel.call(message));\n    }<\/code><\/pre>\n\n\n\n<p>\u8fd9\u6837\u5c31\u53ef\u4ee5\u5b9e\u73b0\u57fa\u4e8e\u5185\u5b58\u7684\u804a\u5929\u8bb0\u5fc6\u529f\u80fd\uff01<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u96c6\u6210Mongodb\u5b9e\u73b0\u804a\u5929\u8bb0\u5fc6\uff1a<\/strong><\/p>\n\n\n\n<p>\u5728common\u4e2d\u521b\u5efamongo\u6a21\u5757<\/p>\n\n\n\n<p>\u548cds\u4e00\u6837\uff0c\u96c6\u6210\u4e4b\u540e\uff0c\u914d\u7f6e\u4e00\u4e0bmongo\u7684\u914d\u7f6e\u4fe1\u606f<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-254-1024x267.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"267\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-254-1024x267.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2441\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5728ai\u6a21\u5757\u4e2d\u521b\u5efamsg\u5b9e\u4f53\u7c7b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-255-1024x438.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"438\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-255-1024x438.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2442\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-256.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"850\" height=\"332\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-256.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2443\"  sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/div><\/figure>\n\n\n\n<p>\u521b\u5efa\u4e00\u4e2amapper\uff0c\u8fd9\u91cc\u53ebrepository(\u4ed3\u5e93)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-257-1024x302.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"302\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-257-1024x302.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2444\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>mongo\u4e2dMongoRepository\u5df2\u7ecf\u5e2e\u6211\u4eec\u5b9e\u73b0\u4e86\u57fa\u7840\u7684\u589e\u5220\u6539\u67e5<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-258-1024x573.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-258-1024x573.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2445\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-260-1024x513.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"513\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-260-1024x513.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2447\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5bf9\u6bd4\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-259-1024x263.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"263\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-259-1024x263.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2446\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fd9\u91cc\u7528mongoTemplate\u53bb\u67e5\u8be2mongo\u91cc\u67e5\u8be2\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-261-1024x391.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"391\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-261-1024x391.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2448\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fd9\u91cc\u5b9e\u73b0\u91cd\u5199\u804a\u5929\u8bb0\u5fc6\u7684\u65b9\u6cd5\uff0c\u91cd\u5199ChatMemory<\/p>\n\n\n\n<p>\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-262-1024x515.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"515\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-262-1024x515.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2449\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u7136\u540e\u6211\u4eec\u5230ChatClient\u4e2d\uff0c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-263-1024x431.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"431\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-263-1024x431.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2450\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5c06chatMemory\u653e\u5230ChatClient\u4e2d\u5c31\u53ef\u4ee5\u5b9e\u73b0\u804a\u5929\u8bb0\u5fc6<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-264-1024x490.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"490\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-264-1024x490.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2451\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p><strong>COMMON\u6a21\u5757\uff1a<\/strong><\/p>\n\n\n\n<p>\u8be5\u6a21\u5757\u4e3b\u8981\u653e\u4e00\u4e9b\u516c\u5171\u7684\u7ec4\u4ef6\uff0c\u6bd4\u5982\u6570\u636e\u6e90\u554a\u7b49\u7b49<\/p>\n\n\n\n<p>\u6211\u4eec\u521b\u5efa\u4e00\u4e2acommon\u6a21\u5757\u53ea\u4fdd\u7559pom\u6587\u4ef6\uff0c\u7c7b\u4f3caimin-parent\uff0c\u7136\u540e\u6211\u4eec\u5728\u6b64\u521b\u5efa\u5b50\u6a21\u5757\uff0ccommon\u7684\u7236\u9879\u76ee\u4f9d\u65e7\u662faimin-parent\uff0c\u5b50\u6a21\u5757\u7684\u7236\u9879\u76ee\u662fcommon<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-250.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"613\" height=\"267\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-250.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2435\"  sizes=\"auto, (max-width: 613px) 100vw, 613px\" \/><\/div><\/figure>\n\n\n\n<p>\u56e0\u4e3a\u6211\u4eec\u8981\u505a\u5168\u5c40\u6570\u636e\u6e90\u7edf\u4e00\u914d\u7f6e\uff0c\u5728auth\u7b49\u6a21\u5757\u4e2d\u5f15\u5165ds\u4f9d\u8d56\uff0c\u6240\u4ee5\u6211\u4eec\u5728auth\u7b49\u6a21\u5757\uff08\u9700\u8981\u6570\u636e\u6e90\u914d\u7f6e\u7684\u6a21\u5757\uff09\u5f15\u5165bootstrap\u4f9d\u8d56\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\t&lt;dependency&gt;\n\t\t\t&lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n\t\t\t&lt;artifactId&gt;spring-cloud-starter-bootstrap&lt;\/artifactId&gt;\n\t\t&lt;\/dependency&gt;<\/code><\/pre>\n\n\n\n<p>\u7136\u540e\u6211\u4eec\u5728\u5176\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\uff0c\u9996\u5148\u5c06\u539f\u6765\u7684application.yml\u6539\u4e3abootstrap.yml\uff0c\u7136\u540e\u518d\u914d\u7f6e<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>spring:\n  config:\n    import:\n      - optional:classpath:application.yml<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">spring.config.import&nbsp;\u7684\u4f5c\u7528<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.&nbsp;\u914d\u7f6e\u6587\u4ef6\u5bfc\u5165\u673a\u5236<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8fd9\u662f&nbsp;Spring Boot&nbsp;2.4+ \u5f15\u5165\u7684\u65b0\u914d\u7f6e\u5bfc\u5165\u673a\u5236<\/li>\n\n\n\n<li>\u7528\u4e8e\u5728\u8fd0\u884c\u65f6\u52a8\u6001\u5bfc\u5165\u989d\u5916\u7684\u914d\u7f6e\u6587\u4ef6<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>optional:&nbsp;&#8211;&nbsp;\u8868\u793a\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6\u662f\u53ef\u9009\u7684\uff0c\u5982\u679c\u6587\u4ef6\u4e0d\u5b58\u5728\u4e0d\u4f1a\u62a5\u9519<\/li>\n\n\n\n<li>classpath:&nbsp;&#8211; \u8868\u793a\u4ece classpath\uff08\u7c7b\u8def\u5f84\uff09\u4e2d\u67e5\u627e\u6587\u4ef6<\/li>\n\n\n\n<li>application.yml&nbsp;&#8211;&nbsp;\u8981\u5bfc\u5165\u7684\u914d\u7f6e\u6587\u4ef6\u540d<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3.&nbsp;\u4e3a\u4ec0\u4e48\u9700\u8981\u8fd9\u4e2a\u914d\u7f6e<\/h3>\n\n\n\n<p>\u5728\u4f60\u7684\u9879\u76ee\u4e2d\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e3b\u914d\u7f6e\u6587\u4ef6\u662f&nbsp;bootstrap.yml<\/li>\n\n\n\n<li>\u4f46\u4f60\u53ef\u80fd\u8fd8\u6709\u5176\u4ed6\u914d\u7f6e\u5728&nbsp;application.yml&nbsp;\u4e2d<\/li>\n\n\n\n<li>\u901a\u8fc7\u8fd9\u4e2a\u914d\u7f6e\uff0cSpring Boot \u4f1a\u540c\u65f6\u52a0\u8f7d\u4e24\u4e2a\u914d\u7f6e\u6587\u4ef6<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4.&nbsp;\u914d\u7f6e\u6587\u4ef6\u52a0\u8f7d\u987a\u5e8f<\/h3>\n\n\n\n<p>Spring&nbsp;Boot \u4f1a\u6309\u4ee5\u4e0b\u987a\u5e8f\u52a0\u8f7d\u914d\u7f6e\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>bootstrap.yml&nbsp;(\u5148\u52a0\u8f7d)<\/li>\n\n\n\n<li>application.yml&nbsp;(\u540e\u52a0\u8f7d\uff0c\u4f1a\u8986\u76d6\u524d\u9762\u7684\u914d\u7f6e)<\/li>\n<\/ol>\n\n\n\n<p>\u7531\u4e8ecommon\u4e2d\u7684ds\u6a21\u5757\u4e0d\u9700\u8981\u542f\u52a8\uff0c\u81ea\u7136\u6ca1\u6709\u542f\u52a8\u7c7b\uff0c\u8fd9\u4e2ads\u6a21\u5757\u88ab\u8c01\u6ce8\u5165\uff0c\u8c01\u5c31\u53ef\u4ee5\u5c06ds\u4e2d\u7684\u4e00\u4e9bbean\u7ed9\u914d\u7f6e\u5728\u81ea\u5df1\u6a21\u5757\u4e2d\u7684ioc\u5bb9\u5668\u4e2d\uff0c\u90a3\u4e48\u600e\u4e48\u624d\u80fd\u5b9e\u73b0\u8fd9\u4e2a\u529f\u80fd\u5462\uff0c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-252-1024x360.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"360\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-252-1024x360.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2437\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-253-1024x172.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"172\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-253-1024x172.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2438\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5199\u5165\u5230org.springframework.boot.autoconfigure.AutoConfiguration.imports\u8fd9\u4e2a\u6587\u4ef6\u4e2djiuok\uff0c\u56fa\u5b9a\u5199\u6cd5<\/p>\n\n\n\n<p>\u5c06\u9700\u8981\u58f0\u660e\u7684bean\u5728ds\u4e2dorg.springframework.boot.autoconfigure.AutoConfiguration.imports\u58f0\u660e\u51fa\u6765<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-265.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"203\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-265.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2452\"  sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/div><\/figure>\n\n\n\n<p>MybatisPlusjoin<a href=\"https:\/\/mybatis-plus-join.github.io\/pages\/quickstart\/quickstart.html\">https:\/\/mybatis-plus-join.github.io\/pages\/quickstart\/quickstart.html<\/a><\/p>\n\n\n\n<p><strong>\u52a8\u6001\u4ee3\u7406\uff1a<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-276.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"831\" height=\"127\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-276.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2466\"  sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-277-1024x467.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"467\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-277-1024x467.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2467\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e3b\u8981\u662f\u901a\u8fc7Proxy.<em>newProxyInstance<\/em>\u6765\u521b\u5efa\u4ee3\u7406\u5bf9\u8c61\uff0c\u91cc\u9762\u6709\u4e09\u4e2a\u53c2\u6570\uff0c\u4e00\u4e2a\u662f\u7c7b\u52a0\u8f7d\u5668\uff08\u56fa\u5b9a\uff09\uff0c\u4e00\u4e2a\u662f<\/p>\n\n\n\n<p>\u88ab\u4ee3\u7406\u7684\u63a5\u53e3\uff0c\u6bd4\u5982UserService,\u8fd8\u6709\u4e00\u4e2a\u5c31\u662f\u88ab\u4ee3\u7406\u7684\u7c7b<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-278-1024x452.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"452\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-278-1024x452.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2468\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u53ef\u4ee5\u770b\u5230newProxyInstance\u6709\u4e09\u4e2a\u53c2\u6570\uff0c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-279-1024x227.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"227\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-279-1024x227.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2469\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">InvocationHandler\u662f\u4e2a\u63a5\u53e3\uff0c\u6240\u4ee5\u9700\u8981\u5b9e\u73b0\u4e00\u4e0b<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-281.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"868\" height=\"193\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-281.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2471\"  sizes=\"auto, (max-width: 868px) 100vw, 868px\" \/><\/div><\/figure>\n\n\n\n<p>\u5177\u4f53\u5b9e\u73b0\uff1a\u53ea\u9700\u8981\u5b9e\u73b0invoke\u65b9\u6cd5<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-282-1024x485.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"485\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-282-1024x485.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2472\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p><strong>Satoken-Redis\u96c6\u6210\u65b9\u6848\uff1a<\/strong><\/p>\n\n\n\n<p>\u5728\u914d\u7f6e\u597dredis\u6a21\u5757\u4fe1\u606f\u540e\uff0c\u76f4\u63a5\u5728<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-283-1024x303.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"303\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-283-1024x303.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2475\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e2d\u6dfb\u52a0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;dependency&gt;\n\t\t\t&lt;groupId&gt;cn.dev33&lt;\/groupId&gt;\n\t\t\t&lt;artifactId&gt;sa-token-redis-jackson&lt;\/artifactId&gt;\n\t\t&lt;\/dependency&gt;<\/code><\/pre>\n\n\n\n<p>\u5c31\u4ee3\u8868\u5df2\u7ecf\u5c06satoken\u5b58\u50a8\u65b9\u6848\u6539\u4e3aredis<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-284-1024x90.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"90\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-284-1024x90.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2476\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-285-1024x357.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"357\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-285-1024x357.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2477\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4ed6\u4f1a\u9ed8\u8ba4\u4f7f\u7528redis\u91cc\u9762\u7684\u6240\u6709\u9ed8\u8ba4\u914d\u7f6e<\/p>\n\n\n\n<p>\u57fa\u4e8egateway\uff1a\u5b9e\u73b0\u7f51\u5173\u9274\u6743<\/p>\n\n\n\n<p>\u5728\u7f51\u5173\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u4f9d\u8d56\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-287-1024x612.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"612\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-287-1024x612.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2481\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- Sa-Token \u6743\u9650\u8ba4\u8bc1\uff08Reactor\u54cd\u5e94\u5f0f\u96c6\u6210\uff09, \u5728\u7ebf\u6587\u6863\uff1ahttps:\/\/sa-token.cc --&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;cn.dev33&lt;\/groupId&gt;\n    &lt;artifactId&gt;sa-token-reactor-spring-boot-starter&lt;\/artifactId&gt;\n    &lt;version&gt;1.44.0&lt;\/version&gt;\n&lt;\/dependency&gt;\n\n&lt;!-- Sa-Token \u6574\u5408 Redis \uff08\u4f7f\u7528 jackson \u5e8f\u5217\u5316\u65b9\u5f0f\uff09 --&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;cn.dev33&lt;\/groupId&gt;\n    &lt;artifactId&gt;sa-token-redis-jackson&lt;\/artifactId&gt;\n    &lt;version&gt;1.44.0&lt;\/version&gt;\n&lt;\/dependency&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;org.apache.commons&lt;\/groupId&gt;\n    &lt;artifactId&gt;commons-pool2&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n\n\n\n<p>\u8fd9\u91cc\u5462\uff0c\u6211\u4eec\u628asatoken\u7ed9\u6e05\u7406\u51fa\u6765\u4e86<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-289.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"867\" height=\"530\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-289.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2483\"  sizes=\"auto, (max-width: 867px) 100vw, 867px\" \/><\/div><\/figure>\n\n\n\n<p>\u6211\u4eec\u628aSaTokenConfigure\u914d\u7f6e\u6587\u4ef6\u653e\u5230satoken    starter\u91cc\u9762<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-290-1024x363.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"363\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-290-1024x363.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2484\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6ce8\u610f\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-291.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"954\" height=\"330\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-291.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2485\"  sizes=\"auto, (max-width: 954px) 100vw, 954px\" \/><\/div><\/figure>\n\n\n\n<p>config\u662f\u548ccloud\u540c\u4e00\u7ea7\uff0c\u4e0d\u7528\u5f04\u9519\uff0c\u4e0d\u7136\u8fde\u63a5\u4e0d\u4e0aredis\u7684\u90a3\u4e2astarter<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u5b9e\u73b0\u591a\u8d26\u53f7\u767b\u5f55\uff1a<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-292-1024x524.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"524\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-292-1024x524.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2486\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u5982\u679ctokenName\u4e00\u6837\uff0c\u90a3\u4e48\u7ba1\u7406\u7aef\u5c31\u4f1a\u6709\u98ce\u9669\u63a5\u53e3\u6570\u636e<\/p>\n\n\n\n<p>\u90a3\u5728\u7ba1\u7406\u7aef\u5b58token\u7684\u65f6\u5019tokenName\u6539\u4e3aadmin-auth-token\u5c31\u597d\u4e86<\/p>\n\n\n\n<p>\u591a\u8d26\u53f7\u8ba4\u8bc1\u767b\u5f55\u7528\u5230\u4e86\u7b56\u7565\u6a21\u5f0f<\/p>\n\n\n\n<p>\u7528\u5230\u4e86\u7b56\u7565\u6a21\u5f0f\uff0b\u7b80\u5355\u5de5\u5382\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7b56\u7565\u63a5\u53e3\uff1aLoginCheckStrategy<\/li>\n\n\n\n<li>\u5177\u4f53\u7b56\u7565\uff1aAdminPathStrategy\u3001PublicPathStrategy\u3001UserPathStrategy<\/li>\n\n\n\n<li>\u7b56\u7565\u9009\u62e9\u5668\uff08\u7b80\u5355\u5de5\u5382\uff09\uff1aStrategyFactory#getStrategy(String)&nbsp;\u6309\u8def\u5f84\u7528&nbsp;AntPathMatcher&nbsp;\u4ece&nbsp;LinkedHashMap&lt;String,&nbsp;LoginCheckStrategy&gt;&nbsp;\u4e2d\u6311\u9009\u7b56\u7565\uff0c\u672a\u547d\u4e2d\u8fd4\u56de\u9ed8\u8ba4&nbsp;PublicPathStrategy\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5efa\u8bae\u4f18\u5316\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4fdd\u8bc1\u5339\u914d\u4f18\u5148\u7ea7\uff1a\u5df2\u7528&nbsp;LinkedHashMap\uff0c\u9ad8\u4f18\u5148\u7ea7\u89c4\u5219\u653e\u524d\u9762\u5373\u53ef\u3002<\/li>\n\n\n\n<li>\u5c06\u7b56\u7565\u6539\u4e3a&nbsp;Spring&nbsp;Bean\uff08\u5982\u6709\u4f9d\u8d56\u6ce8\u5165\u9700\u6c42\uff09\uff0c\u5de5\u5382\u91cc\u4ece\u5bb9\u5668\u83b7\u53d6\u3002<\/li>\n\n\n\n<li>\u652f\u6301\u6a21\u5f0f\u5206\u7ec4\uff1a\u5982&nbsp;\/aimin-auth\/test\/**&nbsp;\u7edf\u4e00\u8d70&nbsp;UserPathStrategy\uff0c\u51cf\u5c11\u5355\u63a5\u53e3\u914d\u7f6e\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5b9e\u73b0\u622a\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-293-1024x399.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"399\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-293-1024x399.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2489\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p><br>\u9996\u5148\u6211\u4eec\u5728satoken\u6a21\u5757\u5b9a\u4e49\u4e86SaTokenAutoConfiguration\uff0c\u901a\u8fc7&nbsp;@Configuration&nbsp;+&nbsp;@Bean&nbsp;\u628a&nbsp;StpUtilConfig&nbsp;\u4f5c\u4e3a&nbsp;Spring Bean&nbsp;\u653e\u5165\u5bb9\u5668\u3002<\/p>\n\n\n\n<p>\u521d\u59cb\u5316\u94a9\u5b50<\/p>\n\n\n\n<p>@Bean(initMethod&nbsp;=&nbsp;&#8220;init&#8221;)&nbsp;\u4f1a\u5728&nbsp;Bean&nbsp;\u521b\u5efa\u540e\u81ea\u52a8\u8c03\u7528&nbsp;StpUtilConfig#init()\uff0c\u7528\u4e8e\u5b8c\u6210 Sa-Token&nbsp;\u76f8\u5173\u7684\u521d\u59cb\u5316\uff08\u4f8b\u5982\u81ea\u5b9a\u4e49 StpUtil\u3001\u6ce8\u518c\u591a\u7aef\u767b\u5f55\u903b\u8f91\u3001\u5168\u5c40\u62e6\u622a\u5668\u7b49\uff09\u3002<\/p>\n\n\n\n<p>\u4fbf\u4e8e\u6a21\u5757\u590d\u7528<\/p>\n\n\n\n<p>\u653e\u5728\u516c\u5171\u6a21\u5757&nbsp;aimin-satken&nbsp;\u4e2d\uff0c\u88ab\u4efb\u610f\u4e1a\u52a1\u6a21\u5757\u4f9d\u8d56\u540e\u5373\u53ef\u201c\u5f00\u7bb1\u5373\u7528\u201d\uff0c\u65e0\u9700\u5728\u6bcf\u4e2a\u4e1a\u52a1\u6a21\u5757\u91cd\u590d\u914d\u7f6e\u3002<\/p>\n\n\n\n<p>\u4e00\u53e5\u8bdd\uff1a\u96c6\u4e2d\u5316\u3001\u81ea\u52a8\u5316\u5730\u5b8c\u6210 Sa-Token&nbsp;\u7684\u521d\u59cb\u5316\u4e0e\u914d\u7f6e\u6ce8\u5165\u3002<\/p>\n\n\n\n<p>\u5728StpUtilConfig\u4e2d\u6211\u4eec\u914d\u7f6e\u4e86setTokenName\uff0c\u7528\u6237\u7aef\u548c\u7ba1\u7406\u7aef\u7684\u5177\u4f53\u4fe1\u606f<\/p>\n\n\n\n<p>\u7136\u540e\u6211\u4eec\u5728<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-294-1024x221.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"221\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-294-1024x221.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2490\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u914d\u7f6e\u4e86\u7528\u4e8e\u6821\u9a8c\u7528\u6237\u7aef\u548c\u7ba1\u7406\u7aef\u7684<em>stpLogic<\/em>\uff0c\u7528\u4e8e\u6821\u9a8c\u4e0d\u540c\u8eab\u4efd\u7684\u7528\u6237<\/p>\n\n\n\n<p>\u7136\u540e\u6211\u4eec\u6765\u5230\u7f51\u5173\uff0c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-295-1024x438.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"438\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-295-1024x438.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2491\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fd9\u91cc\u6211\u4eec\u914d\u7f6e\u4e86\u4e00\u4e2a\u8fc7\u6ee4\u5668\uff0c\u901a\u8fc7String requestPath = SaHolder.<em>getRequest<\/em>().getRequestPath();\u53bb\u5339\u914d\u4e0d\u540c\u8def\u5f84\u7684\u8bf7\u6c42\u4ece\u800c\u8ba9\u4e0d\u901a\u7684\u6821\u9a8c\u5668\u53bb\u6821\u9a8c<\/p>\n\n\n\n<p>\u6211\u4eec\u5199\u4e00\u4e2a\u63a5\u53e3<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-296-1024x216.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"216\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-296-1024x216.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2492\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8ba9userPathStrategy\u7b49\u53bb\u5b9e\u73b0\u5b83\uff08\u591a\u6001\u7684\u5b9e\u73b0\uff09\uff0c<\/p>\n\n\n\n<p>\u7136\u540e\u6211\u4eec\u7528StrategyFactory\u4e2dgetStrategy\u53bb\u6821\u9a8c<\/p>\n\n\n\n<p>\u8fd9\u91cc\u8bbe\u7f6e\u597d\u54ea\u79cd\u8def\u5f84\u8bf7\u6c42\u7528\u54ea\u4e2a\u6821\u9a8c\u5668<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-298-1024x443.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"443\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-298-1024x443.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2494\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-299-1024x343.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"343\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-299-1024x343.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2495\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-300-1024x415.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"415\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-300-1024x415.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2496\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p><strong>\u7f13\u5b58\u5b9e\u73b0\uff1a<\/strong><\/p>\n\n\n\n<p>\u6211\u4eec\u4f7f\u7528\u7684\u662fcaffeine\uff0c\u8fd9\u4e2acaffeine\u4f5c\u4e3a\u4e00\u7ea7\u7f13\u5b58\uff0c<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-302-1024x169.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"169\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-302-1024x169.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2500\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6211\u4eec\u8bbe\u7f6e\u4e86\u5b83\u7684\u914d\u7f6e\u4fe1\u606f\u8fc7\u671f\u65f6\u95f4\u4e3a20s\uff0c\u6211\u4eec\u5728pom\u6587\u4ef6\u4e2d\u5bfc\u5165redis\u7684\u4f9d\u8d56\u4ee5\u53ca\u914d\u7f6e\u4fe1\u606f<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-303-1024x212.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"212\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-303-1024x212.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2501\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u90a3\u4e48\u4ed6\u5c31\u4f1a\u9ed8\u8ba4\u8d70\u4e8c\u7ea7\u7f13\u5b58<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-304-1024x437.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"437\" data-original=\"https:\/\/note.ui11.cc\/wp-content\/uploads\/2025\/08\/image-304-1024x437.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2502\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9879\u76ee\u5168\u5c40\u4f7f\u7528Kni4j\u8c03\u8bd5\u5de5\u5177 \u9996\u5148Auth\u6a21\u5757\uff1a \u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u767b\u5f55 \u4e09\u4e2a\u7aef\uff1a\u5c0f\u7a0b\u5e8f\u7aef\uff0c\u5f00\u53d1\u8005\u670d\u52a1\u5668\u7aef\uff0c\u5fae\u4fe1\u63a5\u53e3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2408","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/posts\/2408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/comments?post=2408"}],"version-history":[{"count":13,"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/posts\/2408\/revisions"}],"predecessor-version":[{"id":2503,"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/posts\/2408\/revisions\/2503"}],"wp:attachment":[{"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/media?parent=2408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/categories?post=2408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/note.ui11.cc\/index.php\/wp-json\/wp\/v2\/tags?post=2408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}