IDEA + 通义灵码AI程序员:快速构建DDD后端工程模板

news2025/2/22 16:10:52

作者:陈荣健

IDEA + 通义灵码AI程序员:快速构建DDD后端工程模板

在软件开发过程中,一个清晰、可维护、可扩展的架构至关重要。领域驱动设计 (DDD) 是一种软件开发方法,它强调将软件模型与业务领域紧密结合,从而构建更贴近业务需求的系统。本文将介绍如何利用 IntelliJ IDEA 编辑器和阿里云的通义灵码 AI 程序员,快速搭建一个基于 DDD 领域驱动架构的后端工程模板,作为其他工程的初始化工程。

一、准备工作

1.IntelliJ IDEA 安装:  确保已安装 IntelliJ IDEA,推荐使用最新版本。本文基于IntelliJ IDEA 2024.3.3 (Community Edition)进行演示。

下载地址:https://www.jetbrains.com/idea/download/?section=windows

2.JDK 安装:  确保已安装 JDK 8 或以上版本。本文使用版本为23.0.2

java version "23.0.2" 2025-01-21
Java(TM) SE Runtime Environment (build 23.0.2+7-58)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.2+7-58, mixed mode, sharing)

3.Maven 安装:  这里使用 Maven 作为项目构建工具,并配置好环境变量。

C:\Users\17217>mvn -v
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: E:\install\apache-maven-3.9.9
Java version: 23.0.2, vendor: Oracle Corporation, runtime: E:\install\Java\jdk-23
Default locale: zh_CN, platform encoding: UTF-8
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"

二、安装阿里云的通义灵码插件

1.在 IntelliJ IDEA 中安装阿里云的通义灵码插件。可以通过 File -> Settings -> Plugins 搜索 “通义灵码” 并安装。已经安装过了的话,则会提示升级,我们升级到最新版2.1.0,便可以使用AI程序员了

安装通义灵码

三、登录通义灵码

插件安装成功后,会自动弹出登录提示,我们根据提示完成登录即可,可以直接使用支付宝或者手机号完成登录

登录通义灵码

四、功能介绍

如图,我们可以点击通义灵码的图标,我的再右上测。可以看到可以进行智能问答和AI程序员,输入区域左下角可以选择基础模型。可以看到我们的基础模型已经有我们最近火的一塌糊涂的deepseek r1,但只能智能问答。AI程序员的话,目前只支持deepseek v3和qwen-2,5

功能介绍

五、何为AI程序员

打个比方,他就是甘愿为你做牛做马的员工,绝不会撒手不干,更不会离你而去!嘻嘻!在公司当牛马的你,回到家后,你可以当老板来吆喝它来给你干活,只要你会说人话,他就能吭哧吭哧的给你不知疲倦的干活了!这不,加班回来后,发泄下,充当老板来指挥员工干活,不然睡不着么!

六、老板开始指挥员工干活了

1. 给员工提需要

1.请你基于当前目录,基于springboot+maven快速构建DDD领域驱动架构后端工程模板,并确保工程创建完后可以成功运行
2.工程模板构建成功后,请基于springAI框架,编写一个可以调用Deepseek r1大模型的API,并确保API编写完成,启动工程后,可以通过postman工具进行成功调用

如下,点击发送后,静静的等待它给你完成编码即可,编写完成后,我们只要点击接受即可

给AI程序员提需求

生成了以下项目目录,可以看出来他虽然吭哧吭哧的在右边生成了这个目录,但是实际上工程创建时,并没有按照他说的这个目录结构进行创建。

D:\IDEA\ddd-springboot-template
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           ├── application
│   │   │           ├── domain
│   │   │           ├── infrastructure
│   │   │           └── interfaces
│   │   └── resources
│   └── test
│       └── java
└── pom.xml

并帮我们创建了如下的文件

自动创建目录和文件

七、老板验收工作-运行项目

1. 把项目添加为maven工程

此过程会去maven仓库拉取依赖,速度可能会有点慢,执行过程中看是否会报错。居然没有报错

把工程添加为maven工程

2. 尝试启动工程

尝试启动工程

刚启动就直接报错了!员工干活实在不靠谱!必须给我加班!

启动工程时,直接报错了

算了,作为老板要有耐心,员工才能忠于你,继续为你干活!,有问题说问题,对事不对人哈!

项目启动时,控制台提示:java: 程序包org.springframework.ai.client不存在,请修复

还好,还是孺子可教,知道错在哪里并很快给我修复,作为老板只能接受了!

修改bug

最终他还是没能给我找到对的依赖,进入了死循环,只能我自己动手了!下面是为修改后的pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>ddd-springboot-template</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>ddd-springboot-template</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 添加Spring AI的其他必要依赖 -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
            <version>1.0.0-M5</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-spring-boot-autoconfigure</artifactId>
            <version>1.0.0-M5</version>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>-->

        <dependency>
            <groupId>org.apache.httpcomponents.client5</groupId>
            <artifactId>httpclient5</artifactId>
            <version>5.2.1</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

下面是我创建的配置文件

# Deepseek configuration
spring.ai.openai.api-key=申请自己的key
spring.ai.openai.base-url=https://api.siliconflow.cn
spring.ai.openai.chat.options.model=deepseek-ai/DeepSeek-R1

下面是我修改的DeepseekController

package com.example.interfaces;


import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;


@RestController
@CrossOrigin(origins = "*")
publicclassDeepseekController {

    privatefinal ChatClient chatClient;

    publicDeepseekController(ChatClient.Builder builder) {
        this.chatClient = builder.defaultSystem("你是一个占卜大师,当有人输入日期的时候,你输出今天的桃花运和财运信息,"+ "生成结果在html页面中以markdown的格式输出,最后输出结尾的时候始终以下面的语句结尾:感谢您的咨询,我是陈荣健。").build();
    }

    @GetMapping(value = "/deepseek/{message}")
    public String chat(@PathVariable("message") String message){
        return chatClient.prompt().user(message).call().content();
    }
}

3. 测试 API 接口

测试

八、总结

本文介绍了如何利用 IntelliJ IDEA 编辑器和阿里云的通义灵码 AI 程序员,快速搭建一个基于 DDD 领域驱动架构的后端工程模板。 测试下来,这个AI程序员并不能顺利的按照他的想法来执行,想一套,做一套,还是需要老板亲自动手才能让工程跑起来。希望通义灵码 AI 程序员这个员工可以学习更多的知识,在未来能够聪明的给更多的牛马能够真正成为老板!所以这个工程如果需要作为ddd工程模板,还需要人为干预才能完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2303505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

内容中台重构企业内容管理的价值维度与实施路径

内容概要 在数字化转型进程中&#xff0c;企业内容管理&#xff08;ECM&#xff09;与内容中台的差异性体现在价值维度的重构与能力边界的突破。传统ECM系统通常聚焦于文档存储、权限控制等基础功能&#xff0c;而内容中台通过标准化流程引擎与智能工具链&#xff0c;构建起覆…

CPU封装形式解析:从传统到先进封装的技术演进

中央处理器&#xff08;CPU&#xff09;的封装技术是半导体制造的关键环节&#xff0c;直接影响芯片的电气性能、散热效率和物理可靠性。随着半导体工艺的不断进步&#xff0c;封装形式从早期的简单结构演变为复杂的多维集成方案。本文将系统解析CPU的主流封装形式及其技术特点…

Spring Boot 应用(官网文档解读)

Spring Boot 启动方式 SpringApplication.run(MyApplication.class, args); Spring Boot 故障分析器 在Spring Boot 项目启动发生错误的时候&#xff0c;我们通常可以看到上面的内容&#xff0c;即 APPLICATION FAILED TO START&#xff0c;以及后面的错误描述。这个功能是通过…

【智能客服】ChatGPT大模型话术优化落地方案

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 一、项目背景 1.1 行业背景 1.2 业务现…

1.22作业

1 Web-php-unserialize __construct()与$file、__destruct() __wakeup()检查 先绕过wakeup函数&#xff1a; O:4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";}1.PHP序列化的时候对public protected private变量的处理方式是不同的 public无标…

学习aigc

DALLE2 论文 Hierarchical Text-Conditional Image Generation with CLIP Latents [2204.06125] Hierarchical Text-Conditional Image Generation with CLIP LatentsAbstract page for arXiv paper 2204.06125: Hierarchical Text-Conditional Image Generation with CLIP L…

overflow-x: auto 使用鼠标实现横向滚动,区分触摸板和鼠标滚动事件的方法

假设一个 div 的滚动只设置了 overflow-x: auto 我们发现使用鼠标的滚轮是无法左右滚动的&#xff0c;但是使用笔记本电脑的触摸板&#xff0c;或者在移动设备上是可以滚动的。所以我们需要兼容一下鼠标的横向滚动功能。 我们可以监控 wheel 事件&#xff0c;然后根据位置来计…

模拟实现Java中的计时器

定时器是什么 定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码. 前端/后端中都会用到计时器. 定时器是⼀种实际开发中⾮常常⽤的组件. ⽐如⽹络通信中, 如果对⽅ 500ms 内没有返回数据, 则断开连接尝试重…

Ubuntu 的RabbitMQ安装

目录 1.安装Erlang 查看erlang版本 退出命令 2. 安装 RabbitMQ 3.确认安装结果 4.安装RabbitMQ管理界面 5.启动服务并访问 1.启动服务 2.查看服务状态 3.通过IP:port 访问界面 4.添加管理员用户 a&#xff09;添加用户名&#xff1a;admin&#xff0c;密码&#xff1…

vim修改只读文件

现象 解决方案 对于有root权限的用户&#xff0c;在命令行输入 :wq! 即可强制保存退出

【DeepSeek】本地部署,保姆级教程

deepseek网站链接传送门&#xff1a;DeepSeek 在这里主要介绍DeepSeek的两种部署方法&#xff0c;一种是调用API&#xff0c;一种是本地部署。 一、API调用 1.进入网址Cherry Studio - 全能的AI助手选择立即下载 2.安装时位置建议放在其他盘&#xff0c;不要放c盘 3.进入软件后…

NCRE证书构成:全国计算机等级考试证书体系详解

全国计算机等级考试&#xff08;NCRE&#xff09;证书体系为中学生提供了一个系统学习和提升计算机能力的平台。本文将详细介绍 NCRE 证书的构成&#xff0c;帮助中学生了解 NCRE 证书的级别和内容&#xff0c;规划未来职业发展。 一、NCRE 证书体系概述 NCRE 证书共分为四个级…

如何在WPS打开的word、excel文件中,使用AI?

1、百度搜索&#xff1a;Office AI官方下载 或者直接打开网址&#xff1a;https://www.office-ai.cn/static/introductions/officeai/smartdownload.html 打开后会直接提示开始下载中&#xff0c;下载完成后会让其选择下载存放位置&#xff1a; 选择位置&#xff0c;然后命名文…

【设计模式】 代理模式(静态代理、动态代理{JDK动态代理、JDK动态代理与CGLIB动态代理的区别})

代理模式 代理模式是一种结构型设计模式&#xff0c;它提供了一种替代访问的方法&#xff0c;即通过代理对象来间接访问目标对象。代理模式可以在不改变原始类代码的情况下&#xff0c;增加额外的功能&#xff0c;如权限控制、日志记录等。 静态代理 静态代理是指创建的或特…

《A++ 敏捷开发》- 16 评审与结对编程

客户&#xff1a;我们的客户以银行为主&#xff0c;他们很注重质量&#xff0c;所以一直很注重评审。他们对需求评审、代码走查等也很赞同&#xff0c;也能找到缺陷&#xff0c;对提升质量有作用。但他们最困惑的是通过设计评审很难发现缺陷。 我&#xff1a;你听说过敏捷的结对…

NutUI内网离线部署

文章目录 官网拉取源代码到本地仓库修改源代码打包构建nginx反向代理部署访问内网离线地址 在网上找了一圈没有写NutUI内网离线部署的文档&#xff0c;花了1天时间研究下&#xff0c;终于解决了。 对于有在内网离线使用的小伙伴就可以参考使用了 如果还是不会联系UP主:QQ:10927…

【实战篇】【深度介绍 DeepSeek R1 本地/私有化部署大模型常见问题及解决方案】

引言 大家好&#xff01;今天我们来聊聊 DeepSeek R1 的本地/私有化部署大模型。如果你正在考虑或者已经开始了这个项目&#xff0c;那么这篇文章就是为你准备的。我们会详细探讨常见问题及其解决方案&#xff0c;帮助你更好地理解和解决在部署过程中可能遇到的挑战。准备好了…

Qt学习(六) 软件启动界面 ,注册表使用 ,QT绘图, 视图和窗口绘图,Graphics View绘图框架:简易CAD

一 软件启动界面 注册表使用 知识点1&#xff1a;这样创建的界面是不可以拖动的&#xff0c;需要手动创建函数来进行拖动&#xff0c;以下的3个函数是从父类继承过来的函数 virtual void mousePressEvent(QMouseEvent *event);virtual void mouseReleaseEvent(QMouseEvent *eve…

java练习(36)

ps:题目来自力扣 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s 的&#xff0c;而不是部分字符串。 class Solution {publ…

【Linux网络编程】IP协议格式,解包步骤

目录 解析步骤 1.版本字段&#xff08;大小&#xff1a;4比特位&#xff09; 2.首部长度&#xff08;大小&#xff1a;4比特位&#xff09;&#xff08;单位&#xff1a;4字节&#xff09; &#x1f35c;细节解释&#xff1a; 3.服务类型&#xff08;大小&#xff1a;8比特…