当前位置: 首页 > news >正文

基于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版本下载地址:
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 172022.x 分支对应的是 Spring Cloud 2022 与 Spring Boot 3.0.x,最低支持 JDK 172021.x 分支对应的是 Spring Cloud 2021 与 Spring Boot 2.6.x,最低支持 JDK 1.82020.0 分支对应的是 Spring Cloud 2020 与 Spring Boot 2.4.x,最低支持 JDK 1.82.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.81.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.cwgis</groupId><artifactId>galaxy-ai</artifactId><version>1.0</version><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><maven-jar-plugin.version>3.3.0</maven-jar-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><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><!-- Spring Boot Maven Plugin --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><!--  打包成一个jar文件--><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>io.spring.javaformat</groupId><artifactId>spring-javaformat-maven-plugin</artifactId><version>${spring-javaformat-maven-plugin.version}</version><executions><execution><phase>validate</phase><inherited>true</inherited><goals><goal>validate</goal></goals></execution></executions></plugin>
<!--        <plugin>-->
<!--          <groupId>org.apache.maven.plugins</groupId>-->
<!--          <artifactId>maven-site-plugin</artifactId>-->
<!--          <version>${maven-site-plugin.version}</version>-->
<!--        </plugin>--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version>
<!--          <configuration>-->
<!--            <source>${java.version}</source>-->
<!--            <target>${java.version}</target>-->
<!--            &lt;!&ndash; 或者使用 release 选项(需要JDK 9+) &ndash;&gt;-->
<!--            &lt;!&ndash; <release>${java.version}</release> &ndash;&gt;-->
<!--          </configuration>--></plugin>
<!--        <plugin>-->
<!--          <groupId>org.apache.maven.plugins</groupId>-->
<!--          <artifactId>maven-surefire-plugin</artifactId>-->
<!--          <version>${maven-surefire-plugin.version}</version>-->
<!--          &lt;!&ndash;-->
<!--          <configuration>-->
<!--            <argLine>${surefireArgLine}</argLine>-->
<!--          </configuration> &ndash;&gt;-->
<!--        </plugin>--><!--        <plugin>-->
<!--          <groupId>org.apache.maven.plugins</groupId>-->
<!--          <artifactId>maven-jar-plugin</artifactId>-->
<!--          <version>${maven-jar-plugin.version}</version>-->
<!--          <configuration>-->
<!--            <archive>-->
<!--              <manifestEntries>-->
<!--                <Implementation-Title>${project.artifactId}</Implementation-Title>-->
<!--                <Implementation-Version>${project.version}</Implementation-Version>-->
<!--              </manifestEntries>-->
<!--            </archive>-->
<!--          </configuration>-->
<!--        </plugin>--><!--        <plugin>-->
<!--          <groupId>org.codehaus.mojo</groupId>-->
<!--          <artifactId>flatten-maven-plugin</artifactId>-->
<!--          <version>${flatten-maven-plugin.version}</version>-->
<!--          <executions>-->
<!--            <execution>-->
<!--              <id>flatten</id>-->
<!--              <phase>process-resources</phase>-->
<!--              <goals>-->
<!--                <goal>flatten</goal>-->
<!--              </goals>-->
<!--              <configuration>-->
<!--                <updatePomFile>true</updatePomFile>-->
<!--                <flattenMode>ossrh</flattenMode>-->
<!--                <pomElements>-->
<!--                  <distributionManagement>remove</distributionManagement>-->
<!--                  <dependencyManagement>remove</dependencyManagement>-->
<!--                  <repositories>remove</repositories>-->
<!--                  <scm>keep</scm>-->
<!--                  <url>keep</url>-->
<!--                  <organization>resolve</organization>-->
<!--                </pomElements>-->
<!--              </configuration>-->
<!--            </execution>-->
<!--            <execution>-->
<!--              <id>clean</id>-->
<!--              <phase>clean</phase>-->
<!--              <goals>-->
<!--                <goal>clean</goal>-->
<!--              </goals>-->
<!--            </execution>-->
<!--          </executions>-->
<!--        </plugin>-->
<!--        <plugin>-->
<!--          <groupId>org.apache.maven.plugins</groupId>-->
<!--          <artifactId>maven-deploy-plugin</artifactId>-->
<!--          <version>${maven-deploy-plugin.version}</version>-->
<!--        </plugin>--></plugins></pluginManagement><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></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-aiconfig:import: nacos:192.168.30.33:8848#profiles:#  active:devai:dashscope:api-key: sk-111111111111111111111111111111cloud:nacos:config:server-addr: 192.168.30.33:8848#namespace: 'cwigs'group: 'ai'username: 'nacos'password: 'nacos'file-extension: yamlenable: truerefresh-enabled: truediscovery:# Nacos服务器地址server-addr: 192.168.30.33:8848#namespace: 'cwigs'group: 'ai'management:endpoint:health:show-details: alwaysendpoints: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-idprivate 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() {@Overridepublic Executor getExecutor() {return null;}@Overridepublic 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;}
}

本blog地址:https://blog.csdn.net/hsg77

http://www.xdnf.cn/news/454015.html

相关文章:

  • Spyglass:跨时钟域同步(同步单元)
  • Gin 框架指南(代码+通俗解析版)
  • 2025前四月新能源汽车出口增长52.6%,外贸ERP数字化助力汽企持续跃升
  • 给 DBGridEh 增加勾选用的检查框 CheckBox
  • 通用软件项目技术报告 - 导读I
  • C++ 并发编程(1)再学习,为什么子线程不调用join方法或者detach方法,程序会崩溃? 仿函数的线程启动问题?为什么线程参数默认传参方式是值拷贝?
  • 阿里的库存秒杀实现与Inventory Hint技术解析
  • Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南
  • Linux系统编程——fork函数的使用方法
  • idea插件使用
  • Prometheus 的介绍与部署(入门)
  • Spring 的 异常管理的相关注解@ControllerAdvice 和@ExceptionHandler
  • 2011-2019年各省总抚养比数据
  • 【GESP真题解析】第 5 集 GESP一级 2023 年 3 月编程题 2:长方形面积
  • Python实例题:Python抓取相亲网数据
  • Maplibgre-gl 学习1 初识
  • leetcode刷题日记——旋转链表
  • 深入理解Java HotSpot中的即时编译
  • 规控算法分类
  • 【Vue.js 的核心魅力:深入理解声明式渲染】
  • 学习黑客NFC技术详解
  • 互联网协议的多路复用、Linux系统的I/O模式
  • 【FileZilla】sftp协议的数据传输上传和下载
  • 软考软件设计师中级——软件工程笔记
  • QT---信号与槽
  • scons user 3.1.2
  • hls 的使用方式
  • ICML-2024《Image Clustering with External Guidance》
  • PADS入门笔记【一】
  • 基于etcd的分布式任务调度系统:设计、实现与实战经验