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

电脑网站 发展移动端jsp网站 iis

电脑网站 发展移动端,jsp网站 iis,上海注册公司的流程,移动优化课主讲:夫唯老师从零开始搭建 Spring Cloud 项目(订单库存模块) 下面我将带你从零开始搭建一个完整的 Spring Cloud 项目,包含订单(order)和库存(stock)两个模块,使用 Nacos 作为注册中心和配置中心。 一、项目初始化 1. 创建父工程&#xff0…

从零开始搭建 Spring Cloud 项目(订单+库存模块)

下面我将带你从零开始搭建一个完整的 Spring Cloud 项目,包含订单(order)和库存(stock)两个模块,使用 Nacos 作为注册中心和配置中心。

一、项目初始化

1. 创建父工程(Maven聚合项目)

<!-- 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>spring-cloud-demo</artifactId><version>1.0.0</version><packaging>pom</packaging><name>spring-cloud-demo</name><modules><module>order-service</module><module>stock-service</module><module>api-commons</module><module>gateway</module></modules><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>2021.0.7</spring-cloud.version><spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version></properties><dependencyManagement><dependencies><!-- Spring Cloud --><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 --><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></dependencies></dependencyManagement>
</project>

2. 创建公共模块(api-commons)

<!-- api-commons/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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-demo</artifactId><groupId>com.example</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>api-commons</artifactId><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies>
</project>

二、订单服务(order-service)

1. 创建订单模块

<!-- order-service/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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-demo</artifactId><groupId>com.example</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>order-service</artifactId><dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Nacos Discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- Nacos Config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- OpenFeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- API Commons --><dependency><groupId>com.example</groupId><artifactId>api-commons</artifactId><version>${project.version}</version></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies>
</project>

2. 订单服务配置

# order-service/src/main/resources/bootstrap.yml
spring:application:name: order-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848file-extension: yamlgroup: DEFAULT_GROUPnamespace: public

3. 订单服务主启动类

// order-service/src/main/java/com/example/order/OrderApplication.java
package com.example.order;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}
}

4. 订单服务Controller

// order-service/src/main/java/com/example/order/controller/OrderController.java
package com.example.order.controller;import com.example.order.feign.StockFeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/order")
public class OrderController {@Autowiredprivate StockFeignService stockFeignService;@GetMapping("/create")public String createOrder() {// 调用库存服务扣减库存String result = stockFeignService.deduct();return "创建订单成功," + result;}
}

5. Feign客户端接口

// order-service/src/main/java/com/example/order/feign/StockFeignService.java
package com.example.order.feign;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;@FeignClient(name = "stock-service", path = "/stock")
public interface StockFeignService {@GetMapping("/deduct")String deduct();
}

三、库存服务(stock-service)

1. 创建库存模块

<!-- stock-service/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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-demo</artifactId><groupId>com.example</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>stock-service</artifactId><dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Nacos Discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- API Commons --><dependency><groupId>com.example</groupId><artifactId>api-commons</artifactId><version>${project.version}</version></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies>
</project>

2. 库存服务配置

# stock-service/src/main/resources/bootstrap.yml
spring:application:name: stock-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848file-extension: yamlgroup: DEFAULT_GROUPnamespace: public

3. 库存服务主启动类

// stock-service/src/main/java/com/example/stock/StockApplication.java
package com.example.stock;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class StockApplication {public static void main(String[] args) {SpringApplication.run(StockApplication.class, args);}
}

4. 库存服务Controller

// stock-service/src/main/java/com/example/stock/controller/StockController.java
package com.example.stock.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/stock")
public class StockController {@GetMapping("/deduct")public String deduct() {System.out.println("库存扣减成功");return "库存扣减成功";}
}

四、API网关(gateway)

1. 创建网关模块

<!-- gateway/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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>spring-cloud-demo</artifactId><groupId>com.example</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>gateway</artifactId><dependencies><!-- Spring Cloud Gateway --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- Nacos Discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies>
</project>

2. 网关配置

# gateway/src/main/resources/bootstrap.yml
spring:application:name: gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:discovery:locator:enabled: true # 开启从注册中心动态创建路由的功能lower-case-service-id: true # 使用小写服务名routes:- id: order-serviceuri: lb://order-servicepredicates:- Path=/order/**- id: stock-serviceuri: lb://stock-servicepredicates:- Path=/stock/**
server:port: 8080

3. 网关主启动类

// gateway/src/main/java/com/example/gateway/GatewayApplication.java
package com.example.gateway;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}

五、测试项目

  1. 启动Nacos服务(确保已安装并运行)
  2. 依次启动:
    • stock-service
    • order-service
    • gateway
  3. 访问测试:
    • 通过网关访问订单服务:http://localhost:8080/order/create
    • 直接访问库存服务:http://localhost:8080/stock/deduct

六、项目结构说明

spring-cloud-demo
├── api-commons          # 公共模块
├── order-service        # 订单服务
│   ├── src
│   │   ├── main
│   │   │   ├── java
│   │   │   │   └── com
│   │   │   │       └── example
│   │   │   │           └── order
│   │   │   └── resources
│   │   └── test
│   └── pom.xml
├── stock-service        # 库存服务
│   ├── src
│   │   ├── main
│   │   │   ├── java
│   │   │   │   └── com
│   │   │   │       └── example
│   │   │   │           └── stock
│   │   │   └── resources
│   │   └── test
│   └── pom.xml
├── gateway              # API网关
│   ├── src
│   │   ├── main
│   │   │   ├── java
│   │   │   │   └── com
│   │   │   │       └── example
│   │   │   │           └── gateway
│   │   │   └── resources
│   │   └── test
│   └── pom.xml
└── pom.xml              # 父工程POM

七、扩展功能建议

  1. 添加分布式事务:使用Seata处理订单创建和库存扣减的分布式事务
  2. 添加熔断降级:使用Sentinel实现服务熔断
  3. 添加链路追踪:使用Sleuth+Zipkin实现分布式链路追踪
  4. 添加配置中心:使用Nacos Config管理配置
  5. 添加鉴权:使用Spring Security或OAuth2实现API鉴权

这个项目已经包含了Spring Cloud的核心组件:服务注册与发现(Nacos)、服务调用(Feign)、API网关(Gateway)。你可以基于此继续扩展完善。


文章转载自:

http://Muj44Ui2.Ljbch.cn
http://WmhNj4Cs.Ljbch.cn
http://ivFo5llv.Ljbch.cn
http://cLe0MiNR.Ljbch.cn
http://qRd2PJnv.Ljbch.cn
http://6koOHJy9.Ljbch.cn
http://vbiB1WbT.Ljbch.cn
http://dyvbxNjh.Ljbch.cn
http://CckUOXgj.Ljbch.cn
http://RAkkIS1i.Ljbch.cn
http://VrX8QLqF.Ljbch.cn
http://5mKM8v9u.Ljbch.cn
http://PtDmAjbG.Ljbch.cn
http://xecaz29j.Ljbch.cn
http://oINwGkDV.Ljbch.cn
http://AvZUqGUW.Ljbch.cn
http://OKT2LQkN.Ljbch.cn
http://4LN7C6bh.Ljbch.cn
http://o9PRs0At.Ljbch.cn
http://WNcABbzR.Ljbch.cn
http://7THBQz8D.Ljbch.cn
http://ewQdNI5N.Ljbch.cn
http://pHmhaU8g.Ljbch.cn
http://Ez0bqDiy.Ljbch.cn
http://7iK5PIyK.Ljbch.cn
http://sq26xDgl.Ljbch.cn
http://ITkGyTm6.Ljbch.cn
http://VrkkIUs4.Ljbch.cn
http://e9p9wbVZ.Ljbch.cn
http://SILuEoFx.Ljbch.cn
http://www.dtcms.com/wzjs/671062.html

相关文章:

  • 专业型网站和个人网站化工原料价格查询网站
  • 申请域名哪个网站好安徽网页设计
  • 校园二手网站开发的意义苏州手机网站制作
  • 怎么生成域名做网站app store应用商店下载
  • dede网站源码 如何怎么做网站咨询
  • 网站备案中商城服务性质是什么虚拟机wordpress安装教程视频教程
  • 网站如何做电脑和手机兰州做网站咨询兰州做网站公司
  • 做网站的公司如何运营上海软件开发公司排名
  • 网站域名与网站首页网址wordpress更换图片地址
  • 优秀定制网站建设方案公司网站建设的
  • 大连宏帝建设网站珠海网站建设招聘
  • pc端手机网站 viewport 自适应摄影网站模板
  • 自己的免费网站空间有什么字体设计网站
  • 顺德网站建设合理使用颜色搭配_方能达到最佳视觉效果wordpress小程序投稿
  • 河南省和建设厅网站首页四川住房和城乡建设厅网站不能进入
  • 凡科网站建站教程体育西网站开发
  • 义乌建设网站seo站群优化
  • 做一网站要学些什么软件做视频怎样传到网站
  • 深圳印刷网站建设公司网站设计有哪些使用技巧呢
  • react.js 做网站好吗ae模板下载网站推荐
  • 自动化设计网站建设智慧团建手机登录官网
  • 做网站的设计尺寸找兼职做网站的哪里找
  • 手机软件下载网站手机网站的模板下载
  • 用wordpress搭建完整网站教程gae安装wordpress
  • 网站搜索排名优化打开一个网站慢
  • asp网站服务建设论文客户管理软件有哪些
  • 程序员网站邢台seo公司
  • 网站资源建设的步骤家居seo整站优化方案
  • 平台式网站模板中国网站制作企业排行榜
  • 网站的基本元素wordpress模板最多使用