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

Java微服务-新建demo

一、整体架构

1.功能模块 如下,简洁明了

                  Client (前端、App、小程序)|Gateway(统一入口,流量网关、鉴权)|------------------------------------|           |            |         auth-service  user-service  order-service(认证)         (用户)         (订单)|common(通用工具库被引用)

代码结构:

模块介绍:

模块归属层级是否同级主要作用备注
gateway-service网关层——统一入口、安全网关负责全局转发和认证
auth-service业务微服务层认证中心登录、发放token
user-service业务微服务层用户中心管理用户信息
order-service业务微服务层订单中心管理订单流程
common通用支撑层被所有业务微服务引用通用工具只提供工具支持

二、IDEA创建

1.创建项目(项目和模块填写好包名 最好统一包名)

 

2.创建模块(创建好项目后,接着在项目名上面右键-创建模块) 

三、具体代码(已经调试完bug,踩完坑,可以运行的版本)

父工程

pom.xml

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xbc</groupId><artifactId>xbcms-api</artifactId><version>1.0.0</version><packaging>pom</packaging><name>xbcms-api 微服务父工程</name><!-- 全局属性 --><properties><java.version>1.8</java.version><spring.boot.version>2.7.15</spring.boot.version><spring.cloud.version>2021.0.8</spring.cloud.version><spring.cloud.alibaba.version>2021.0.4.0</spring.cloud.alibaba.version><mybatis.plus.version>3.5.3.1</mybatis.plus.version><knife4j.version>3.0.3</knife4j.version><jjwt.version>0.9.1</jjwt.version><springdoc.version>1.6.14</springdoc.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><mysql.version>8.0.33</mysql.version></properties><!-- 子模块声明 --><modules><module>common</module><module>gateway</module><module>user-service</module><module>order-service</module><module>auth</module></modules><!-- 统一依赖管理 --><dependencyManagement><dependencies><!-- Spring Boot BOM --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud BOM --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud Alibaba BOM --><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><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.3.2</version> <!-- 当前非常稳定 --></dependency></dependencies></dependencyManagement><!-- 公共依赖(所有子模块自动继承) --><dependencies><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency></dependencies><!-- 插件配置 --><build><plugins><!-- 编译器插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build></project>

 common模块

pom.xml

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xbc</groupId><artifactId>xbcms-api</artifactId><version>1.0.0</version></parent><artifactId>common</artifactId><name>common</name><dependencies><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency><!-- JWT --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- Fastjson2 --><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.42</version></dependency><!-- Redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- Spring Web (工具模块也可使用) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

gateway模块

pom.xml

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xbc</groupId><artifactId>xbcms-api</artifactId><version>1.0.0</version></parent><artifactId>gateway</artifactId><name>gateway</name><dependencies><!-- Spring Cloud Gateway (核心依赖,无需引入spring-boot-starter-web) --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- Nacos 服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><!-- JWT --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- 公共模块 --><dependency><groupId>com.xbc</groupId><artifactId>common</artifactId><version>1.0.0</version></dependency></dependencies></project>

配置文件:

server:port: 8080spring:application:name: gateway-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848  # 改成真实IPgateway:routes:- id: auth-serviceuri: lb://auth-servicepredicates:- Path=/auth/**- id: user-serviceuri: lb://user-servicepredicates:- Path=/user/**- id: order-serviceuri: lb://order-servicepredicates:- Path=/order/**main:web-application-type: reactive # 防止启动失败 需要去掉默认的web# 日志
logging:level:com.xbc: debug

auth模块

pom.xml

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xbc</groupId><artifactId>xbcms-api</artifactId><version>1.0.0</version></parent><artifactId>auth</artifactId><name>auth</name><dependencies><!-- Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- MyBatis Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis.plus.version}</version></dependency><!-- MySQL 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- JWT --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- 引入 common 模块 --><dependency><groupId>com.xbc</groupId><artifactId>common</artifactId><version>1.0.0</version></dependency></dependencies></project>

配置:

server:port: 8081spring:application:name: auth-servicedatasource:url: username: password: driver-class-name: com.mysql.cj.jdbc.Drivercloud:nacos:discovery:server-addr: 127.0.0.1:8848mybatis-plus:global-config:db-config:id-type: autoconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

user模块

pom.xml

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xbc</groupId><artifactId>xbcms-api</artifactId><version>1.0.0</version></parent><artifactId>user-service</artifactId><name>user-service</name><dependencies><!-- Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- OpenFeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- MyBatis Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis.plus.version}</version></dependency><!-- MySQL 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- JWT --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- 引入 common 模块 --><dependency><groupId>com.xbc</groupId><artifactId>common</artifactId><version>1.0.0</version></dependency></dependencies></project>

配置文件:

server:port: 8082spring:application:name: user-servicedatasource:url: username: password: driver-class-name: com.mysql.cj.jdbc.Drivercloud:nacos:discovery:server-addr: 127.0.0.1:8848   ## feign日志级别 (后续用到)
logging:level:com.xbc: debugmybatis-plus:global-config:db-config:id-type: autoconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

order模块

pom.xml

<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.xbc</groupId><artifactId>xbcms-api</artifactId><version>1.0.0</version></parent><artifactId>order-service</artifactId><name>order-service</name><dependencies><!-- Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- OpenFeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><!-- JWT --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- 引入 common 模块 --><dependency><groupId>com.xbc</groupId><artifactId>common</artifactId><version>1.0.0</version></dependency></dependencies></project>

配置文件:

server:port: 8083spring:application:name: order-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848feign:client:config:default:connectTimeout: 5000readTimeout: 10000logging:level:com.xbc: debug

四、安装运行

1.安装mysql(自行安装)

2.安装nacos

  • 官网下载地址:Nacos 快速开始 | Nacos 官网
  • 下载解压
  • a.解压后修改配置为你的数据库。另外把这3个配置解开:
  • spring.datasource.platform=mysql
    spring.sql.init.platform=mysql### Count of DB:
    db.num=1
    
  • b.新建数据库,导入mysql的相关表到你的库,脚本位置:\nacos\conf\mysql-schema.sql

五、运行测试

 访问网关,然后转发得到结果

最后:需要源码私信 

http://www.lryc.cn/news/571263.html

相关文章:

  • UTF-8 发展历史以及与 UTF-16/GBK 之间的差异
  • AI办公提效,Deepseek + wps生成ppt
  • 网络安全之任意文件读取利用
  • 如何在应用中实现地图关键字搜索和标记聚合功能?
  • 图扑软件 | 3D 场景视频嵌入应用
  • 【pytest进阶】Pytest之conftest详解
  • Kafka网络模块全链路源码深度剖析与设计哲学解读
  • RAG 架构地基工程-Retrieval 模块的系统设计分享
  • 测试:网络协议超级详解
  • 国产数据库KingbaseES零基础实战:Oracle兼容功能从入门到精通
  • 探索KingbaseES在线体验平台:国产数据库新体验
  • 力扣Hot100每日N题(19~24)
  • 性能测试|数据说话!在SimForge平台上用OpenRadioss进行汽车碰撞仿真,究竟多省时?
  • 页面配置文件pages.json和小程序配置
  • 金仓数据库在线体验平台:开启国产数据库云端探索之旅
  • 【万元大奖】2025年第二届教育信息技术应用创新大赛——操作系统技能创新挑战赛 开始报名啦!!!
  • 资产结构分析怎么做?以固定资产和存货为例
  • LLM大模型系列(十):深度解析 Prefill-Decode 分离式部署架构
  • 红队攻防渗透技术实战流程:信息打点-Web应用源码泄漏开源闭源指纹识别GITSVNDS备份
  • 项目的难点
  • 接雨水 - 困难
  • Java 常用类 Time API:现代时间处理的艺术
  • GPU算力应用迈出关键一步:DPIN与南洋生物科技合作落地
  • 如何设置端口映射? 常见本地计算机内网ip端口映射给公网外网访问的详细方法步骤
  • 深入剖析Spring Cloud Gateway,自定义过滤器+断言组合成拦截器链实现Token认证
  • Win32 专栏停更公告
  • 讲透 RNN 到 Transformer !!!
  • k8s 收集event事件至Loki
  • Kafka 简介(附电子教程资料)
  • 云计算-Raft算法报告-raft与paxos对比