Nacos的使用快速上手

下载的地址: https://github.com/alibaba/nacos/releases/tag/2.2.3

部署需要修改什么

打jar包的时候,先进行的是bootscrap 然后是application,所以说在bootscrap有的可以不在application

1.先创建多个配置文件

2.修改数据库的密码

application 配置那个文件生效

复制代码
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 110.41.51.65:10020
        namespace: 8a61ef37-2daa-402f-8b1d-5363629c5c87 # 服务注册的命名空间,建议和配置中心保持一致

这个文件可以直接删除,因为我们已经有了bootscrap.yml

application-dev

不用修改

application-prod

3.在dependence同级写一个profiles 是你的要使用的本地的这个

复制代码
<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <profile.name>dev</profile.name>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <profile.name>prod</profile.name>
        </properties>
    </profile>
</profiles>

4.在bootscrap.yml 中修改一下 <profile.name>prod</profile.name>的

复制代码
@profile.name@

jar包用这个命令

复制代码
nohup java -jar product-service-1.0-SNAPSHOT.jar > logs/product-9090.log &

1. nohup

意思:不挂断,关了终端也继续跑 你关掉 Xshell、关掉电脑,服务不会停

2. java -jar xxx.jar

意思:启动 SpringBoot 服务 就是运行你的商品服务 product-service

3. > logs/product-9090.log

意思:把日志输出到这个文件里不在屏幕上乱跳,全部存进文件。

4. &

意思:后台运行你还能继续输别的命令,不卡住终端。

别的类引用处理办法

在别的类里直接引用别的参数就是特殊的jar包

1. 两种 JAR 包的核心区别

类型 生成方式 能否被依赖 用途
可执行 JAR (Fat Jar) Spring Boot 默认打包 (package) 不可 直接运行 (java -jar),包含所有依赖
普通 JAR (普通模块打包) 标准 Maven 打包 作为公共模块,被其他服务引入

核心痛点 :Spring Boot 默认打包的可执行 JAR,内部结构被加密 / 压缩了,其他项目无法引用 它里面的类或工具。如果不想报错,必须把公共的代码 / 工具单独抽成一个普通模块

2. 为什么要做这种配置?(红框配置的作用)

你需要在 公共模块pom.xml 里加上这段配置,目的是:打一次包,同时生成两种 JAR

  1. 正常的普通 JAR:可被其他服务依赖引用
  2. 可执行 JAR:自己可以独立运行

配置代码(红框里的核心):

复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <classifier>exec</classifier> <!-- 关键:生成可执行 JAR 的分类器 -->
            </configuration>
        </plugin>
    </plugins>
</build>

效果:打包后,你会看到两个文件:

  • xxx.jar 👉 普通 JAR(干净,可被依赖)
  • xxx-exec.jar 👉 可执行 JAR(带所有依赖,可运行)

3. 最佳实践:单独抽离成公共模块

**千万不要把公共代码放在父工程里!**正确的架构是:

复制代码
spring-cloud-demo
├── common-util (公共模块:放工具类、实体类、通用配置)
│   └── pom.xml (配置上述插件,只打普通 JAR)
├── order-service (业务模块:依赖 common-util)
│   └── pom.xml
└── product-service (业务模块:依赖 common-util)
    └── pom.xml

这样做的好处

  1. 代码复用:所有服务都能用 common-util 里的代码
  2. 版本统一:升级一次,所有服务同步
  3. 避免冲突:解决了 Spring Boot 可执行 JAR 无法被依赖的经典问题

4. 总结

  • 可执行 JAR = 服务的 "成品",专门用来运行
  • 普通 JAR = 服务的 "工具箱",专门用来给别人引用
  • 正确做法 = 把通用的东西抽成一个独立的普通模块,然后各个服务去引用它

方案1:修改 product-service 的 POM(推荐)

product-service/pom.xml 中修改 Spring Boot Maven 插件配置:

复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 删除或注释掉 classifier 配置 -->
                <!-- <classifier>exec</classifier> -->
                
                <!-- 或者明确指定不生成 classifier -->
                <classifier></classifier>
            </configuration>
        </plugin>
    </plugins>
</build>

<configuration>
                
                <!-- <classifier>exec</classifier> -->
                
             
            </configuration>

方案2:修改 order-service 的依赖

order-service/pom.xml 中修改依赖,指定 classifier:

复制代码
<dependency>
    <groupId>com.ytvc</groupId>
    <artifactId>product-service</artifactId>
    <version>1.0-SNAPSHOT</version>
    <classifier>exec</classifier>  <!-- 添加这个 -->
</dependency>

配置文件的静态信息要放过

复制代码
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>**/**</include>
        </includes>
    </resource>
</resources>
相关推荐
007张三丰2 小时前
系统架构设计师-以“云服务”主题为例的范文参考
java·开发语言·网络·软考高级·云服务·软考论文·论文范文
鬼蛟2 小时前
Sentinel
java·开发语言·数据库
GoodStudyAndDayDayUp2 小时前
优化java加权方法
java·优化java加权方法
阿丰资源2 小时前
基于SpringBoot+MySQL的时装购物系统(附源码)
java·spring boot·mysql
阿Y加油吧2 小时前
算法二刷复盘:LeetCode 39 组合总和 & 22 括号生成(Java 回溯精讲)
java·算法·leetcode
Y学院2 小时前
Spring AI Alibaba 高质量实战教程(从入门到企业级落地)
java·人工智能·spring·自然语言处理
水木流年追梦2 小时前
CodeTop Top 300 热门题目3-字符串相加
java·前端·算法
编程之升级打怪2 小时前
自定义实现Java的HashMap集合
java·开发语言
后端AI实验室2 小时前
我带的那个实习生,比我更依赖AI——但他的问题和我完全不同
java·ai