基于nacos2.5.1的java微服务项目开发环境配置简介
基于nacos2.5.1的java微服务项目开发环境配置简介
基于nacos2.5.1的java微服务项目开发环境配置简介
一、引用组件包版本关系
JDK 17
spring-boot: 3.2.3
spring-cloud: 2023.0.3
spring-cloud-alibaba:2023.0.3.2
nacos服务配置中心版本:2.5.1 (最新3.0版本)
maven 版本:3.6.3 (最新3.9.9版本)
maven-compiler-plugin版本:3.11.0
maven-assembly-plugin版本:3.7.0
打包生成一个jar文件
直接IDE中maven面板中的package打包
[INFO] Building jar: D:\cwgis_nacos\galaxy-ai\target\galaxy-ai-1.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.754 s
[INFO] Finished at: 2025-05-20T20:41:02+08:00
[INFO] ------------------------------------------------------------------------
指定jdk17版本运行jar包方法
title galaxy-ai-1.0
#export PATH=E:\apps\nacos\jdk17\bin:$PATH
E:\apps\nacos\jdk17\bin\java -jar galaxy-ai-1.0.jar
title galaxy-ai-1.0
#export PATH=E:\apps\nacos\jdk17\bin:$PATH
E:\apps\nacos\jdk17\bin\java -jar galaxy-ai-1.0.jar
附maven版本下载地址:
https://archive.apache.org/dist/maven/maven-3/
附Spring-Cloud-Alibaba版本关系地址:
https://gitee.com/mirrors/Spring-Cloud-Alibaba
兼容性分析
//兼容性分析
maven-compiler-plugin 3.11.0 支持 JDK 8 到 JDK 21。
maven-compiler-plugin 3.11.0 版本至少需要 Maven 3.6.1 或更高版本。
这是因为 Maven 3.6.1 引入了 release 参数
//如何构建
2023.x 分支对应的是 Spring Cloud 2023 与 Spring Boot 3.2.x,最低支持 JDK 17。
2022.x 分支对应的是 Spring Cloud 2022 与 Spring Boot 3.0.x,最低支持 JDK 17。
2021.x 分支对应的是 Spring Cloud 2021 与 Spring Boot 2.6.x,最低支持 JDK 1.8。
2020.0 分支对应的是 Spring Cloud 2020 与 Spring Boot 2.4.x,最低支持 JDK 1.8。
2.2.x 分支对应的是 Spring Cloud Hoxton 与 Spring Boot 2.2.x,最低支持 JDK 1.8。
greenwich 分支对应的是 Spring Cloud Greenwich 与 Spring Boot 2.1.x,最低支持 JDK 1.8。
finchley 分支对应的是 Spring Cloud Finchley 与 Spring Boot 2.0.x,最低支持 JDK 1.8。
1.x 分支对应的是 Spring Cloud Edgware 与 Spring Boot 1.x,最低支持 JDK 1.7。
运行后效果:
二、创建java工程
maven/quickstart工程模板
org.apache.maven.archetypes:maven-archetype-quickstart
Project SDK ms-17 version 17.0.14
pom.xml引用组件配置情况:
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.scsup</groupId>
<artifactId>galaxy-ai</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>galaxy-ai</name>
<description>Building AI applications with Spring Boot</description>
<!-- FIXME change it to the project's website -->
<url>http://www.scsup.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<spring-boot.version>3.2.3</spring-boot.version>
<commons.io.version>2.13.0</commons.io.version>
<commons.text.version>1.6</commons.text.version>
<commons.lang3.version>3.12.0</commons.lang3.version>
<commons.fileupload.version>1.3.3</commons.fileupload.version>
<!-- Spring AI -->
<spring-ai.version>1.0.0-M3</spring-ai.version>
<spring-ai-alibaba.version>1.0.0-M3.1</spring-ai-alibaba.version>
<dashscope-sdk-java.version>2.15.1</dashscope-sdk-java.version>
<dl4j.version>1.0.0-M2.1</dl4j.version>
<!-- plugin versions -->
<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version>
<maven-failsafe-plugin.version>3.1.2</maven-failsafe-plugin.version>
<maven-javadoc-plugin.version>3.5.0</maven-javadoc-plugin.version>
<maven-source-plugin.version>3.3.0</maven-source-plugin.version>
<jacoco-maven-plugin.version>0.8.10</jacoco-maven-plugin.version>
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
<maven-deploy-plugin.version>3.1.1</maven-deploy-plugin.version>
<asciidoctor-maven-plugin.version>2.2.3</asciidoctor-maven-plugin.version>
<maven-assembly-plugin.version>3.7.0</maven-assembly-plugin.version>
<maven-dependency-plugin.version>3.5.0</maven-dependency-plugin.version>
<maven-site-plugin.version>4.0.0-M13</maven-site-plugin.version>
<maven-project-info-reports-plugin.version>3.4.5</maven-project-info-reports-plugin.version>
<spring-javaformat-maven-plugin.version>0.0.39</spring-javaformat-maven-plugin.version>
<maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version>
<spring-cloud.version>2023.0.3</spring-cloud.version>
<spring-cloud-alibaba.version>2023.0.3.2</spring-cloud-alibaba.version>
</properties>
<!-- Spring Cloud 版本管理 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.3</version> <!-- 使用合适的Spring Boot版本 -->
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<!-- Optionally: parameterized tests support -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version> <!-- 检查是否有新版本并相应更新 -->
</dependency>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter</artifactId>
<version>${spring-ai-alibaba.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MCP jar -->
<!-- Spring Boot Starter for Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Nacos Client -->
<!-- <dependency>-->
<!-- <groupId>com.alibaba.nacos</groupId>-->
<!-- <artifactId>nacos-client</artifactId>-->
<!-- <version>2.4.2</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.alibaba.nacos</groupId>-->
<!-- <artifactId>nacos-api</artifactId>-->
<!-- <version>2.4.2</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.alibaba.nacos</groupId>-->
<!-- <artifactId>nacos-common</artifactId>-->
<!-- <version>2.4.2</version>-->
<!-- </dependency>-->
<!-- Sentinel for MCP -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.11.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--常用工具类 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons.io.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>${commons.text.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>common-lang3</artifactId>
<version>${commons.lang3.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!--add alibaba java lib -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dashscope-sdk-java</artifactId>
<version>${dashscope-sdk-java.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--AI Deeplearning4j Dependencies -->
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-core</artifactId>
<version>1.0.0-M2.1</version>
</dependency>
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-nn</artifactId>
<version>${dl4j.version}</version>
</dependency>
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-native-platform</artifactId>
<version>${dl4j.version}</version>
</dependency>
<!-- DataVec (for CSV reading) -->
<dependency>
<groupId>org.datavec</groupId>
<artifactId>datavec-api</artifactId>
<version>${dl4j.version}</version>
</dependency>
<dependency>
<groupId>org.datavec</groupId>
<artifactId>datavec-local</artifactId>
<version>${dl4j.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<!-- SpringCloud 微服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud Alibaba 微服务 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringBoot 依赖配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>sonatype-nexus-staging</id>
<name>Nexus Release Repository</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
<repository>
<id>aliyun-central</id>
<name>aliyun-central</name>
<url>https://maven.aliyun.com/repository/central</url>
</repository>
<repository>
<id>aliyun-public</id>
<name>aliyun-public</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
<repository>
<id>aliyun-snapshots</id>
<name>aliyun-snapshots</name>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</repository>
<repository>
<id>aliyun-plugin</id>
<name>aliyun-plugin</name>
<url>https://maven.aliyun.com/repository/gradle-plugin</url>
</repository>
<repository>
<id>osgeo</id>
<name>OSGeo Release Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
</repository>
</repositories>
</project>
src/main/resources/application.yml配置情况:
#基本配置
server.port: 9999
server.tomcat.max-http-form-post-size: 5120MB
#server.ssl.key-store-type: PKCS12
#server.ssl.key-store: classpath:keystore.p12
#server.ssl.key-store-password: your_password
#yame配置模式
spring:
application:
name: galaxy-ai
config:
import: nacos:192.168.30.33:8848
#profiles:
# active:dev
ai:
dashscope:
api-key: sk-111111111111111111111111111111
cloud:
nacos:
config:
server-addr: 192.168.30.33:8848
#namespace: 'cwgis'
group: 'ai'
username: 'nacos'
password: 'nacos'
file-extension: yaml
enable: true
refresh-enabled: true
discovery:
# Nacos服务器地址
server-addr: 192.168.30.33:8848
#namespace: 'cwgis'
group: 'ai'
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: '*'
logging:
level:
com.alibaba.cloud.nacos.configdata: debug
nacos配置类 src/main/java/com.cwgis/config/NacosConfigManager.java
package com.cwgis.config;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;
import java.util.Properties;
import java.util.concurrent.Executor;
public class NacosConfigManager {
private static final String SERVER_ADDR = "192.168.30.33:8848"; // Nacos服务器地址
private static final String DATA_ID = "cwgis"; // 配置ID your-data-id
private static final String GROUP = "ai"; // 配置分组
private static final Integer CONNECTION_POOL_SIZE=50;
private ConfigService configService;
public NacosConfigManager() {
try {
Properties properties = new Properties();
properties.put("serverAddr", SERVER_ADDR);
//properties.put("namespace", DATA_ID);
//properties.put("group", GROUP);
//添加附加配置参数
//properties.put("encode", "UTF-8");
//properties.put("DASHSCOPE_CONNECTION_POOL_SIZE", CONNECTION_POOL_SIZE);
//properties.put("DASHSCOPE_CONNECTION_TIMEOUT",5000);
//properties.put("DASHSCOPE_MAXIMUM_ASYNC_REQUESTS",100);
//properties.put("DASHSCOPE_MAXIMUM_ASYNC_REQUESTS_PER_HOST",100);
//properties.put("DASHSCOPE_READ_TIMEOUT",30000);
//properties.put("DASHSCOPE_WRITE_TIMEOUT",30000);
//properties.put("DASHSCOPE_CONNECTION_IDLE_TIME",500000);
//
configService = NacosFactory.createConfigService(properties);
} catch (NacosException e) {
e.printStackTrace();
}
}
// 获取配置
public String getConfig() {
try {
return configService.getConfig(DATA_ID, GROUP, 5000); //5000 是超时ms
} catch (NacosException e) {
e.printStackTrace();
return null;
}
}
// 添加配置监听器
public void addListener() {
try {
configService.addListener(DATA_ID, GROUP, new Listener() {
@Override
public Executor getExecutor() {
return null;
}
@Override
public void receiveConfigInfo(String configInfo) {
System.out.println("配置更新: " + configInfo);
// 处理配置更新事件
}
});
} catch (NacosException e) {
e.printStackTrace();
}
}
// 发布配置
public boolean publishConfig(String content) {
try {
return configService.publishConfig(DATA_ID, GROUP, content);
} catch (NacosException e) {
e.printStackTrace();
return false;
}
}
}
demo Rest控制器类DemoController.java
package com.cwgis;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, Nacos and Sentinel!";
}
}
三、编译运行Java微服务项目
入口类
aiApplication.java
package com.cwgis;
//import com.cwgis.pg.dl4j.LoanApprovalModel;
import com.cwgis.config.NacosConfigManager;
import com.cwgis.pg.function.MockOrderService;
import com.cwgis.pg.function.Response;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Description;
import java.util.function.Function;
/**
* Hello world!
*/
@SpringBootApplication
@EnableDiscoveryClient // 启用服务发现功能
public class aiApplication {
public static void main(String[] args) {
try {
// 初始化Nacos配置管理器
NacosConfigManager configManager = new NacosConfigManager();
// 获取初始配置
String config = configManager.getConfig();
System.out.println("初始配置: " + config);
// 添加配置监听器
configManager.addListener();
SpringApplication.run(aiApplication.class, args);
System.out.println("===============");
System.out.println("ai服务正在运行中!");
System.out.println("===============");
//
//LoanApprovalModel t = new LoanApprovalModel();
//t.test(null);
}
catch (Exception ex)
{
System.out.println(ex);
}
}
@Bean
@Description("根据用户编号和订单编号查询订单信息")
public Function<MockOrderService.Request, Response> getOrderFunction(
MockOrderService mockOrderService) {
return mockOrderService::getOrder;
}
}
http://192.168.30.33:8848/nacos
本blog地址:https://blog.csdn.net/hsg77
更多推荐




所有评论(0)