乐于分享
好东西不私藏

Javaer的AI学习之路——Spring AI 入门:(2)快速搭建一个简单的问答

Javaer的AI学习之路——Spring AI 入门:(2)快速搭建一个简单的问答

本章导读:在理解了Spring AI的核心概念之后,现在让我们进入动手实践环节。本章将以阿里云通义千问(Qwen)大模型为例,从零开始搭建一个完整的Spring AI应用,并成功完成第一次AI对话。读完本章,你将拥有一个可运行的智能对话服务,并掌握以下能力:获取并使用通义千问API Key、配置Spring Boot项目集成通义千问、使用ChatClient完成对话请求、处理常见的启动报错与调试问题。

3.1 环境准备

在开始编码之前,我们需要完成两件准备工作:获取阿里云通义千问的API访问凭证,以及创建一个Spring Boot项目。

3.1.1 获取通义千问API Key

API Key是调用通义千问服务的唯一凭证,获取过程分为两步:开通服务、创建并保存密钥。 

第一步:开通DashScope服务

 DashScope(灵积)是阿里云的大模型服务平台,通义千问系列模型的API统一由该平台管理。打开浏览器,访问阿里云DashScope控制台首页,如果尚未登录,请先登录你的阿里云账号(如无账号,需先免费注册)。进入页面后,在“总览”区域单击“去开通”按钮,阅读并勾选《DashScope服务协议》,确认无误后点击“立即开通”,系统会在几秒钟内激活服务。

 第二步:创建并保管API Key

 服务开通后,页面会自动跳转至API-KEY管理页面,你也可以在控制台左侧导航栏手动点击“API-KEY管理”进入。在API-KEY管理页面,点击“创建新的API-KEY”按钮,系统弹窗会显示新生成的API Key字符串(格式以sk-开头)。

新账号创建完,会给一些免费的额度,可以在模型用量查看:

第三步:验证API Key可用性

 创建完成后,可以通过cURL快速测试Key是否有效。打开终端或命令行,执行以下命令(将YOUR_API_KEY替换为实际获取到的Key):

curl -X POST "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions" \  -H "Authorization: Bearer YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{"model": "qwen-plus", "messages": [{"role": "user", "content": "你好"}]}'

如果返回的JSON中包含choices数组及非空的message字段,则说明API Key已激活且具备调用权限。 

补充说明:本章采用Spring AI官方的OpenAI Starter,通过配置base_url指向DashScope提供的OpenAI兼容端点来调用通义千问。这种方式完全基于Spring AI官方框架,不依赖任何Alibaba专用包,Spring AI通过重用现有的OpenAI客户端与兼容OpenAI接口的模型服务进行集成。切换base_url和模型名称即可迁移现有的OpenAI代码至DashScope。

3.1.2 创建Spring Boot项目

使用Spring Initializr创建基础项目,推荐选择以下配置:

 ● 项目构建工具:Maven(本文以此为例) 

● Spring Boot版本:3.2.x 或更高版本 

● Java版本:17 或 21 

● 依赖项选择:先勾选 Spring Web 即可,其他依赖稍后手动添加

 项目创建完成后,打开IDE(如IntelliJ IDEA或VS Code),等待依赖下载完毕。 

JDK版本说明:Spring AI官方要求构建环境Java 21+,运行时兼容Java 17。推荐使用JDK 21以获得更好的性能和虚拟线程支持,但如果你的环境暂时只有JDK 17,也可以正常运行。

3.2 添加依赖与配置

3.2.1 添加Maven依赖

Spring AI提供了官方的OpenAI Starter,这是与AI模型通信的核心依赖。在项目的pom.xml文件中,首先需要添加Spring AI的BOM,以便统一管理各模块的版本:

<properties><java.version>21</java.version><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-boot.version>3.2.5</spring-boot.version><spring-ai.version>1.1.7</spring-ai.version></properties><dependencyManagement><dependencies><!-- Spring AI BOM --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

然后在节点中添加OpenAI Starter:

</dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency>

如果还需要使用Spring Web能力,可以一并添加:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

完成以上配置后,Maven会自动下载Spring AI相关的依赖包。

3.2.2 配置application.yml

在src/main/resources目录下,创建或编辑application.yml文件,配置通义千问的API Key和模型参数。这里的关键是将base-url指向DashScope的OpenAI兼容端点,即可无缝调用通义千问:

spring:application:name:spring-ai-tutorialai:openai:api-key:${AI_DASHSCOPE_API_KEY}# 复用通义千问的API Key,使用环境变量引用base-url:https://dashscope.aliyuncs.com/compatible-mode# DashScope OpenAI兼容端点chat:options:model:qwen3.6-plus# 通义千问模型名称temperature:0.7# 控制输出随机性,范围0~2,越低越确定性server:port:8080servlet:encoding:charset:UTF-8enabled:trueforce:true

配置中使用了环境变量引用(${AI_DASHSCOPE_API_KEY})而不是直接写明文Key——这是一种良好的安全实践,避免API Key被误提交到版本控制系统。

需要在系统环境中配置此变量: 

  • Windows命令行:set AI_DASHSCOPE_API_KEY=你的API-Key 

  • macOS/Linux终端:export AI_DASHSCOPE_API_KEY="你的API-Key" 

另外,还可以选择在IDE的运行配置中直接设置环境变量——以IntelliJ IDEA为例:进入Run → Edit Configurations → 在Environment variables中添加AI_DASHSCOPE_API_KEY=你的API-Key,这样运行Spring Boot应用时就会自动加载。 

当然,如果只是自己写写,可以直接卸载配置文件,但记住生产环境切不可这么做。

3.2.3 关于模型名称的说明

阿里云DashScope平台通过OpenAI兼容接口支持多种通义千问模型供选择:

模型系列
示例名称
特点
适用场景
Qwen-Max系列
qwen-max, qwen3-max
推理能力最强,效果最优
复杂推理、专业任务
Qwen-Plus系列
qwen-plus
平衡性能与成本,能力均衡
日常对话、内容生成
Qwen-Flash系列
qwen-flash
响应速度快,成本低
高频对话、简单问答

新用户通常有免费的额度可供体验,建议先从qwen-plus开始,它兼顾了响应质量和成本效率。如果追求极致速度,可以切换到qwen-flash;如果处理复杂的逻辑推理任务,则可以选择qwen-max。

3.3 编写第一个Chat接口

3.3.1 创建Controller

创建一个RESTful Controller来暴露对话接口。Spring AI的自动配置会自动扫描并注入所需的ChatClient.Builder实例,我们通过构造器注入即可使用:

package com.springai.guide.controller;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.ai.chat.client.ChatClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;/** * 示例控制器 */@RestController@RequestMapping("/api")publicclassHelloController {privatestaticfinalLoggerlog= LoggerFactory.getLogger(HelloController.class);privatefinal ChatClient chatClient;// 通过构造器注入ChatClient.Builder,然后构建ChatClient实例publicHelloController(ChatClient.Builder builder) {        log.info("=== ChatClient 初始化 ===");/**         * hatClient.Builder 已注入,将使用 application.yml 中的配置         * 配置项: spring.ai.openai.api-key, base-url, chat.options.model 等         * 这些配置已由 Spring AI 自动配置类加载并注入到 Builder 中         *         */// 可选:设置默认的系统提示词,定义AI的角色和行为this.chatClient = builder                .defaultSystem("你是一个乐于助人的AI助手,回答要简洁、准确、友好。")                .build();        log.info("ChatClient 构建完成,可以开始使用");        log.info("========================");    }// 同步对话接口:GET方式,接收消息参数,返回AI回答@GetMapping("/chat")public String chat(@RequestParam(value = "msg", defaultValue = "你好") String msg) {return chatClient.prompt()                .user(msg)       // 设置用户输入的内容                .call()          // 发送请求给AI模型,同步等待响应                .content();      // 获取AI返回的回答文本    }}

上述代码的核心是ChatClient的链式调用:

prompt().user(msg).call().content()

是一个流畅的API,让我们可以用一行代码完成构造提示、发送请求、获取响应的全过程。

3.3.2 启动类

确保主启动类存在且包含@SpringBootApplication注解。Spring AI的自动配置会自动扫描并注入所需的Bean,无需额外配置:

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassApplication {publicstaticvoidmain(String[] args) {        SpringApplication.run(Application.class, args);    }}

3.3.3 ChatModel与ChatClient的选择

在Spring AI中,与AI模型交互主要有两种方式:ChatModel和ChatClient。 ChatModel是底层模型接口,直接与AI模型进行原始通信,适用于需要精细控制调用细节的场景。例如:

ChatResponseresponse= chatModel.call(newPrompt("你好"));Stringresult= response.getResult().getOutput().getContent();

ChatClient则是封装了复杂交互流程的高阶API,提供了链式调用语法,功能更丰富。我们本章使用的是ChatClient,它支持系统提示词设置、结构化输出、工具调用等高级功能。

 两者各有适用场景: 

  • 入门学习阶段:两者皆可使用,ChatModel更简单直接,ChatClient则功能更完备,建议从ChatClient开始,后续章节的功能都需要基于它来实现。 

  • 功能扩展阶段:需要聊天记忆、工具调用、RAG等高级功能时,ChatClient是首选。 

  • 性能敏感场景:关注底层响应细节时,可以选择ChatModel配合流式输出。

3.4 测试

启动应用后,打开浏览器或API测试工具(如Postman、Apifox),访问以下地址:

http://localhost:8080/chat?msg=你好,请介绍一下你自己

你也可以使用cURL命令快速测试:

curl "http://localhost:8080/chat?msg=你好,请介绍一下你自己"

预期效果:通义千问模型会返回一段自我介绍的回答,例如:“你好!我是通义千问,是阿里云开发的大语言模型,可以帮你回答问题、生成内容、编写代码……” 。

如果使用的是DeepSeek等模型,返回的内容会是相应模型的自我介绍。

3.5 增强版本:加入系统提示词

除了简单的用户消息,你还可以在构建ChatClient时设置默认的系统提示词,让AI扮演特定角色——系统提示用于设定AI的行为规范和角色定位,用户提示则是具体的提问内容:

@RestControllerpublicclassChatController {privatefinal ChatClient chatClient;publicChatController(ChatClient.Builder builder) {// 在构建ChatClient时设置默认系统提示词this.chatClient = builder                .defaultSystem("你是一个专业的Java技术专家,精通Spring Boot、微服务架构和性能优化。" +"回答要简洁、准确,尽量给出代码示例。如果涉及代码,请使用Java语言。")                .build();    }@GetMapping("/chat")public String chat(@RequestParam(defaultValue = "你好") String msg) {return chatClient.prompt()                .user(msg)                .call()                .content();    }// 需要临时覆盖系统提示词时,可以在调用时指定@GetMapping("/chat/with-system")public String chatWithSystem(@RequestParam(value = "msg", defaultValue = "你是谁?") String msg,@RequestParam(defaultValue = "你是一个医疗问答助手,你叫小依") String system) {return chatClient.prompt()                .system(system)  // 临时覆盖默认系统提示词                .user(msg)                .call()                .content();    }}

这种方式让AI以特定身份回答问题,回复中将包含更多专业术语和代码示例,适合技术问答场景。 再次启动调用/chat/with-system接口,结果如下:

你好!我是小依,你的专属医疗问答助手。如果你有任何关于健康、疾病、用药、检查报告或日常保健的问题,都可以随时告诉我。我会尽力为你提供专业、清晰的参考信息。请问今天有什么可以帮你的吗?

注意: 在 Spring MVC 中,@RequestParam 如果不指定 name 或 value 属性,会默认将方法参数名作为请求参数的名称。因此: @RequestParam(defaultValue = "你是一个医疗问答助手,你叫小依") String system 等价于: @RequestParam(name = "system", defaultValue = "你是一个医疗问答助手,你叫小依") String system。

 需要注意的是:Maven 编译器默认不启用 -parameters 标志,导致运行时无法获取方法参数名。 可以在pom文件加上:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><parameters>true</parameters></configuration></plugin>

这样会让 Java 编译器在生成的 .class 文件中保留方法参数名称,Spring MVC 就能通过反射获取 @RequestParam 的参数名。

3.6 常见问题与调试技巧

3.6.1 API Key无效或认证失败

启动后调用接口时报错类似401 Unauthorized或Invalid API Key时,请确认:

  • API Key是否正确设置,且格式以sk-开头 

  • 如果使用环境变量引用,确认环境变量在启动Shell或IDE配置中已正确导出 

  • API Key对应的DashScope服务是否已成功开通,部分新用户需要等待几分钟服务生效 

  • 检查application.yml中的api-key是否正确地引用了环境变量,注意YAML的缩进格式

3.6.2 模型名称或端点错误

如果报错提示模型不存在(如Model not found)或连接失败(如Connection refused),请检查: 

  • application.yml中model配置的模型名称是否正确——确认使用的是qwen-plus、qwen-max或qwen-flash等官方提供的模型名称,注意大小写和连字符要完全一致 

  • base-url是否配置正确——国内用户使用https://dashscope.aliyuncs.com/compatible-mode/v1,海外用户可能需要切换到https://dashscope-intl.aliyuncs.com/compatible-mode/v1 [2] ● 如果使用的是企业内网,可能需要对DashScope的域名配置代理或DNS解析

3.7 本章小结

在本章中,我们: 

  • 获取了阿里云通义千问的API Key,完成了Spring Boot项目的依赖配置

  • 通过OpenAI兼容模式将DashScope服务接入Spring AI,理解了base-url配置的关键作用 

  • 编写了一个基于ChatClient的Controller,成功发起了第一次AI对话 

  • 测试了带系统提示词的增强版本,了解了如何让AI扮演特定角色 

  • 探讨了常见启动报错的排查方法 

第一个Spring AI应用已经跑通了——虽然现在它只是一个简单的问答接口,但已经掌握了Spring AI集成的核心模式。后面,将深入探讨ChatClient API的更多能力,学习如何更灵活地构造提示词、处理结构化输出,让AI回答真正为你的业务服务。

参考来源 

● Spring AI官方ChatClient文档 

● 阿里云DashScope OpenAI兼容模式指南 

● Spring AI OpenAI Starter配置参考

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-04 10:46:21 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/705237.html
  2. 运行时间 : 0.155606s [ 吞吐率:6.43req/s ] 内存消耗:4,661.68kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=641cfd7dfa92e2b9d2ab3984f498a96e
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000558s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000831s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000309s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000251s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000552s ]
  6. SELECT * FROM `set` [ RunTime:0.000196s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000531s ]
  8. SELECT * FROM `article` WHERE `id` = 705237 LIMIT 1 [ RunTime:0.000460s ]
  9. UPDATE `article` SET `lasttime` = 1780541181 WHERE `id` = 705237 [ RunTime:0.021199s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.010557s ]
  11. SELECT * FROM `article` WHERE `id` < 705237 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000660s ]
  12. SELECT * FROM `article` WHERE `id` > 705237 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.009693s ]
  13. SELECT * FROM `article` WHERE `id` < 705237 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000642s ]
  14. SELECT * FROM `article` WHERE `id` < 705237 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000719s ]
  15. SELECT * FROM `article` WHERE `id` < 705237 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002195s ]
0.160142s