spring aop maven Spring AOP + Maven 实战:用AOP打破数据孤岛,安全接入AI大模型

网安智编 厦门萤点网络科技 2026-06-02 00:15 2 0
背景 随着人工智能技术的爆发式增长,企业级应用对AI大模型的分析、推理、生成等能力需求日益迫切。然而,传统模型面临“数据孤岛”困境:大量关键业务数据分散在本地系统、专有数据库或第三方服务中,难以通过简单的提示词直接注入模型,导致模型理解受限...

背景

随着人工智能技术的爆发式增长,企业级应用对AI大模型的分析、推理、生成等能力需求日益迫切。然而,传统模型面临“数据孤岛”困境:大量关键业务数据分散在本地系统、专有数据库或第三方服务中,难以通过简单的提示词直接注入模型,导致模型理解受限、决策质量不足。更严峻的是,对于涉及隐私或合规要求的数据(如企业财务信息、医疗记录等),直接暴露给云端模型存在显著安全风险。如何打破数据壁垒,同时确保敏感信息的安全可控,成为AI落地的核心挑战。

在此背景下,模型上下文协议(MCP)应运而生。这一由开源的开放协议,为AI模型与外部数据/工具提供了“标准化桥梁”,通过统一的接口规范,使模型能够动态调用本地文件、数据库、API等资源,实现“上下文感知”的智能交互。MCP的核心价值在于:

而 AI作为Java生态中领先的AI开发框架,通过深度集成MCP协议,为开发者提供了企业级解决方案:其模块化架构、对同步/异步通信的支持、以及与 Boot的无缝融合,使得构建本地MCP客户端与服务端变得高效且可靠。无论是快速搭建文件系统的本地数据中台,还是构建与业务系统(如CRM、ERP)的实时联动, AI的声明式配置、注解驱动开发模式极大降低了技术门槛。

本文将聚焦于“本地MCP服务建设”实战,详细讲解如何基于 AI框架,从零开始搭建MCP客户端与服务端,实现模型与本地资源的的安全交互。通过案例演示,读者将掌握如何通过标准化协议突破数据孤岛,构建既安全可控又具备动态扩展能力的AI应用,为业务智能化升级提供可落地的技术路径。

一、环境准备1.1 基础环境要求

二、模块架构2.1 核心模块

本地MCP服务搭建_spring aop maven_Spring AI MCP协议

三、代码实现3.1 MCP 客户端

Maven 依赖配置

pom.xml

<dependencies>
    
    <dependency>
        <groupId>org.springframework.aigroupId>
        <artifactId>spring-ai-starter-mcp-client-webfluxartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.aigroupId>
        <artifactId>spring-ai-starter-model-openaiartifactId>
    dependency>
    
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webfluxartifactId>
    dependency>
dependencies>

<build>
    <finalName>${appname}finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
            <executions>
                <execution>
                    <goals><goal>repackagegoal>goals>
                execution>
            executions>
        plugin>
    plugins>
build>

示例

.java

@RestController
@RequestMapping("/service")
publicclassMcpClientController {
    privatefinal ChatClient chatClient;
    publicMcpClientController(ChatClient.Builder builder, ToolCallbackProvider tools){
        this.chatClient = builder.defaultToolCallbacks(tools).build();
    }
    @GetMapping("/query/currentTime/{country}")
    Flux queryCurrentTime(@PathVariable String country){
        returnthis.chatClient
            .prompt(new PromptTemplate("调用本地工具查询国家{country}当前时间")
                .create(Map.of("country", country)))
            .stream()
            .content();
    }
}

3.2 MCP 服务端

工具类实现

.java

@Service
publicclassDateTimeTool {
    privatestaticfinal Map<StringString> COUNTRY_MAP = Map.of(
        "c1""2020-02-01 12:00:00",
        "c2""2020-02-01 13:00:00"
    );
    @Tool(description = "国家时间查询工具")
    public String getCurrentDateTimeByCountry(String country){
        return COUNTRY_MAP.getOrDefault(country, 
            LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
    }
}

服务配置

.java

@SpringBootApplication
publicclassMcpServerApplication {
    publicstaticvoidmain(String[] args){
        SpringApplication.run(McpServerApplication.class, args);
    }
    @Bean
    public ToolCallbackProvider tools(DateTimeTool tool){
        return MethodToolCallbackProvider.builder()
            .toolObjects(tool)
            .build();
    }
}

四、关键配置4.1 客户端配置(.)

.

# 日志调试
logging.level.org.springframework.ai=DEBUG
logging.level.io.modelcontextprotocol=DEBUG
# OpenAI 配置
spring.ai.openai.base-url=${AI_BASE_URL}
spring.ai.openai.api-key=${API_KEY}
spring.ai.openai.chat.options.model=qwen-plus
# MCP 客户端配置
spring.ai.mcp.client.toolcallback.enabled=true
spring.ai.mcp.client.request-timeout=60s
spring.ai.mcp.client.root-change-notification=true
spring.ai.mcp.client.stdio.servers-configuration=classpath:mcp-service.json

Spring AI MCP协议_spring aop maven_本地MCP服务搭建

4.2 服务端启动配置(mcp-.json)

mcp-.json

{
  "mcpServers": {
    "my-mcp-service": {
      "command""java",
      "args": [
        "-Dspring.ai.mcp.server.stdio=true",
        "-Dspring.main.web-application-type=none",
        "-Dspring.main.banner-mode=off",
        "-Dlogging.pattern.console=",
        "-jar",
        "/home/admin/app/target/my-mcp-service.jar"
      ]
    }
  }
}

重要提示:必须禁用控制台输出,避免污染 stdio 输入流!

五、部署方案5.1 打包配置(.xml)

<assembly>
  <id>releaseid>
  <formats><format>tar.gzformat>formats>
  <includeBaseDirectory>falseincludeBaseDirectory>
  <fileSets>
    
    <fileSet>
      <directory>../mcp-client/target/directory>
      <includes><include>*.jarinclude>includes>
    fileSet>
    
    
    <fileSet>
      <directory>../mcp-service/target/directory>
      <includes><include>*.jarinclude>includes>
    fileSet>
  fileSets>
assembly>

整合 / 生成统一部署jar包,支持通过进行标准化部署。

六、注意事项

1.构建要求:

2.协议兼容:

3.异常处理:

一键训练大模型及部署GPU共享推理服务

通过创建ACK集群Pro版,使用云原生AI套件提交模型微调训练任务与部署GPU共享推理服务。

点击一键训练模型及部署GPU共享推理服务-阿里云技术解决方案查看详情。