idea JDK17 spring boot+nacos搭建 图文教程

1 .安装JDK17

不做介绍,需要验证jdk环境

2. 安装nacos

nacos官网下载地址:https://nacos.io/download/nacos-server/?spm=5238cd80.4fecfdc.0.0.5bf0e755B1ftSq

本次教程以nacos2.2.1版本为准。

nacos启动不起来请查看官网文档说明:https://nacos.io/docs/v3.0/overview/?spm=5238cd80.4fecfdc.0.0.5bf0e755B1ftSq

spring cloud 和 nacos的版本对应关系

3. 开始搭建spring cloud项目

3.1 新建父级工程

修改父项目的pom

文件中的groupId和artifactId记得改成自己需要的

复制代码
<?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.xxx</groupId>
    <artifactId>xxx</artifactId>
    <!-- 首先修改打包方式 -->
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <!--引入其他的服务 -->
    <modules>

    </modules>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!--  因为是总项目 所以用dependencyManagement来管理  因为其他的子项目就不会来管理版本了了 可以直接引用 -->
    <dependencyManagement>
        <dependencies>
            <!-- springcloud的依赖
             Spring Cloud 与Spring Boot版本对应关系:https://baijiahao.baidu.com/s?id=1771358714767361684&wfr=spider&for=pc  -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2022.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--spring-cloud-alibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2022.0.0.0-RC1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- springboot的依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>3.0.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

删除父项目的src文件

3.2 创建子项目

输入完上述信息后,直接next

spring boot 版本要选择3.x,不然创建出来子项目的pom文件中显示的JDK的版本为1.8

spring web 需要选择一下,不然创建出来的子项目没有resources这个文件夹,没有的可以自己创建一下,并标记

修改子项目security的配置文件

没有parent标签的添加一下,groupId和artifactId记得改成自己需要的

复制代码
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.xxx</groupId>
        <artifactId>xxx</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.xxx</groupId>
    <artifactId>xxx-Security</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>xxx-Security</name>
    <description>xxx-Security</description>

    <properties>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>3.0.2</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>
    <dependencyManagement>
        <dependencies>
            <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.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.junbo.security.JunboSecurityApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

检查一下父项目中的modules标签中是不是有子项目,没有自己加一个,尽量复制粘贴,别写错了,包括大小写

然后理由maven刷新一下,检查是否报错

或者

可以根据自己的习惯修改一下application.properties的名字改成yml格式

复制代码

配置文件中默认端口:8080,可以自行修改

最后可以先写一个接口,启动一下项目,访问一下,验证一下项目是否可以正常运行;

3.3 配置nacos注册中心

子项目中添加nacos的jar

复制代码
        <!-- nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

application.yml中增加nacos配置,xxx为自定义名字

import 和 nacos中data id 名字是一样的,如果不一样,配置文件获取不到

复制代码
spring:
  application:
    name: xxx
  config:
    import: nacos:xxx-dev.yml
  cloud:
    nacos:
      discovery:
        # Nacos注册中心地址(确保Nacos已启动,地址正确)
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml

nacos中创建配置文件

nacos的配置刷新功能

加上上述两个配置,就可以在nacos中实时修改配置,程序中就可以实时刷新了。

3.4 搭建gateway

修改gateway的pom文件 以下配置文件中的xxx更换成自己的名字

复制代码
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.xxx</groupId>
        <artifactId>xxxCloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <groupId>com.xxx</groupId>
    <artifactId>xxx-gateway</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>xxx-gateway</name>
    <description>xxx-gateway</description>
    <properties>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>3.0.0</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!-- nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <!-- gateway-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.junbo.gateway.JunboGatewayApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

修改gateway的application文件,xxxx改为项目的名字

复制代码
spring:
  application:
    name: xxxx-Gateway
  config:
    import: nacos:xxxx-Gateway-dev.yml
  cloud:
    nacos:
      discovery:
        # Nacos注册中心地址(确保Nacos已启动,地址正确)
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml

nacos中增加xxxx-Gateway-dev.yml文件

id xxx为项目的名字或者nacos上 服务列表 的服务名

lb xxx为访问路径上的名字

复制代码
server:
  port: 8887
spring:
  cloud:
    gateway:
      default-filters:
        - AddRequestHeader=origin,gateway # 添加名为origin的请求头,值为gateway
      globalcors:
        cors-configurations:
          '[/**]': # 匹配所有请求
            allowedOrigins: "*" #跨域处理 允许所有的域
            allowedMethods: # 支持的方法
              - GET
              - POST
              - PUT
              - DELETE
      discovery:
        locator:
          enabled: true #开启注册中心路由功能
      routes:  # 路由
        - id: xxx-Security #路由ID,没有固定要求,但是要保证唯一,建议配合服务名
          uri: lb://xxx-Security # 匹配提供服务的路由地址
          predicates: # 断言
            - Path=/security/** # 断言,路径相匹配进行路由
        - id: xxx-User #路由ID,没有固定要求,但是要保证唯一,建议配合服务名
          uri: lb://xxx-User # 匹配提供服务的路由地址
          predicates: # 断言
            - Path=/user/** # 断言,路径相匹配进行路由
config:
  redisTimeout: 60

配置完以上配置可以直接启动测试以下,以上配置为亲测,注意xxx的修改

相关推荐
廋到被风吹走1 小时前
持续学习方向:云原生深度(Kubernetes Operator、Service Mesh、Dapr)
java·开发语言·学习
urkay-2 小时前
Android 当前Activity内显示的浮窗
android·java·iphone·androidx
刘 大 望2 小时前
使用AI IDE从0到1开发五子棋对战项目(vibe coding)
java·人工智能·spring boot·redis·ai·java-rabbitmq·ai编程
液态不合群2 小时前
AI赋能下的中国低代码市场:从工具革新到产业数字化核心引擎
java·人工智能·低代码·架构
零雲2 小时前
java面试:有了解过springboot的自动装配流程吗?
java·spring boot·面试
sanshizhang2 小时前
设计模式-责任链模式
java·设计模式·责任链模式
请叫我大虾2 小时前
数据结构与算法-分裂问题,将数字分成0或1,求l到r之间有多少个1.
java·算法·r语言
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧2 小时前
Day01 Junit 单元测试 & 反射
java·后端·junit·单元测试
逆境不可逃2 小时前
【从零入门23种设计模式16】行为型之迭代器模式
java·开发语言·数据结构·算法·设计模式·职场和发展·迭代器模式