草庐IT

Spring Cloud Alibaba(一)

夕冰 2023-08-14 原文

整合nacos

 一、项目结构small-shop为父工程,order(订单服务)、stock(库存服务)

 二、父工程pom.xml文件,添加基础依赖,控制版本

    <modules>
        <module>order</module>
        <module>stock</module>
    </modules>

    <properties>
        <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.9.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <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>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <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>

三、stock模块(打算使用order模块调用stock模块)

3.1、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">
    <parent>
        <artifactId>small-shop</artifactId>
        <groupId>com.xice.shop</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>stock</artifactId>

    <dependencies>
        <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-discovery</artifactId>
        </dependency>
    </dependencies>
</project>

3.2、application.yml配置文件

server:
  port: 8081  #服务端口
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  #nacos服务地址
  application:
    name: stock-server #服务命称

3.3、服务代码

@RestController
@RequestMapping("stock")
public class StockController {

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 无参数
     * @return
     */
    @RequestMapping("reduce")
    public String reduce(){
        return "库存减一 "+dateFormat.format(new Date());
    }

    /**
     * 多个参数
     * @param orderId
     * @return
     */
    @RequestMapping("reduce1")
    public String reduce1(@RequestParam("orderId")String orderId){
        return "orderId="+orderId+",库存减一 "+dateFormat.format(new Date());
    }

    /**
     * 参数为map
     * @param map
     * @return
     */
    @RequestMapping("reduce2")
    public String reduce2(@RequestBody Map map){
        return "orderId="+map.get("orderId")+",库存减一 "+dateFormat.format(new Date());
    }
}

四、order模块

4.1、pom依赖与stock引入的一样

4.2、application.yml配置文件

server:
  port: 8080  #服务端口
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  #nacos服务地址
  application:
    name: order-server #服务命称

4.3、初始化RestTemplate,需要添加 @LoadBalanced 注解,配置负载均衡策略

@Configuration
public class RestTemplateConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        return builder.build();
    }
}

4.4、使用RestTemplate调用stock服务

@RestController
@RequestMapping("order")
public class OrderController {
    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("add")
    public String add(){
        String result = restTemplate.getForObject("http://stock-server/stock/reduce", String.class);
        String result1 = restTemplate.getForObject("http://stock-server/stock/reduce1?orderId={1}", String.class,"100");
        Map map = new HashMap();
        map.put("orderId",100);
        String result2 = restTemplate.getForObject("http://stock-server/stock/reduce1?orderId={orderId}",String.class, map);
        String result3 = restTemplate.postForObject("http://stock-server/stock/reduce2", map,String.class);

        return result+"----"+result1+"----"+result2+"----"+result3;
    }
}

五、启动两个服务可以在nacos中看到两个服务注册成功

 六、访问http://localhost:8080/order/add

有关Spring Cloud Alibaba(一)的更多相关文章

  1. 手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心 - 2

       SpringCloudAlibaba全集文章目录:零、手把手教你搭建SpringCloudAlibaba项目一、手把手教你搭建SpringCloudAlibaba之生产者与消费者二、手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心三、手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心四、手把手教你搭建SpringCloudAlibaba之Nacos服务集群配置五、手把手教你搭建SpringCloudAlibaba之Nacos服务持久化配置六、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量实时监控七、手把手教你

  2. 【黑马Java笔记+踩坑汇总】JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 - 2

    部分内容摘录于黑马的课件, 部分内容来自于我总结的坑点、注意事项、对相似旧知识的总结。目录0.摘要1.JavaSE基础+进阶2.JavaWeb,Mybatis3.Git4.SSM框架5.Maven高级6.Springboot,MybatisPlus框架7.瑞吉外卖、Redis、Nginx、Linux、mysql主从复制8.SpringCloud,SpringCloudAlibaba、ES、MQ、黑马旅游9.谷粒商城0.摘要Java学习路线:2022黑马程序员Java学习路线图-哔哩哔哩1.JavaSE基础+进阶【黑马Java笔记+踩坑】javaSE基础+进阶2.JavaWeb,Mybatis【

  3. 【黑马Java笔记+踩坑汇总】JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 - 2

    部分内容摘录于黑马的课件, 部分内容来自于我总结的坑点、注意事项、对相似旧知识的总结。目录0.摘要1.JavaSE基础+进阶2.JavaWeb,Mybatis3.Git4.SSM框架5.Maven高级6.Springboot,MybatisPlus框架7.瑞吉外卖、Redis、Nginx、Linux、mysql主从复制8.SpringCloud,SpringCloudAlibaba、ES、MQ、黑马旅游9.谷粒商城0.摘要Java学习路线:2022黑马程序员Java学习路线图-哔哩哔哩1.JavaSE基础+进阶【黑马Java笔记+踩坑】javaSE基础+进阶2.JavaWeb,Mybatis【

  4. SpringCloudAlibaba 微服务组件 Nacos 之配置中心源码深度解析 - 2

    大家好,这篇文章跟大家聊下SpringCloudAlibaba中的微服务组件Nacos。Nacos既能做注册中心,又能做配置中心,这篇文章主要来聊下做配置中心时client端的一些设计,主要从源码层面进行分析,相信看完这篇文章你对Nacosclient端的工作原理应该有比较深刻的了解。SpringCloud应用启动拉去配置我们之前写过一篇文章,介绍了一些Spring提供的扩展机制。其中说到了ApplicationContextInitializer,该扩展是在上下文准备阶段(prepareContext),容器刷新之前做一些初始化工作,比如我们常用的配置中心client基本都是继承该初始化器,

  5. SpringCloudAlibaba 微服务组件 Nacos 之配置中心源码深度解析 - 2

    大家好,这篇文章跟大家聊下SpringCloudAlibaba中的微服务组件Nacos。Nacos既能做注册中心,又能做配置中心,这篇文章主要来聊下做配置中心时client端的一些设计,主要从源码层面进行分析,相信看完这篇文章你对Nacosclient端的工作原理应该有比较深刻的了解。SpringCloud应用启动拉去配置我们之前写过一篇文章,介绍了一些Spring提供的扩展机制。其中说到了ApplicationContextInitializer,该扩展是在上下文准备阶段(prepareContext),容器刷新之前做一些初始化工作,比如我们常用的配置中心client基本都是继承该初始化器,

  6. SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题) - 2

    微服务强调每个服务都是单独的数据库在不使用微服务的情况下可以采用分布式架构,通过Template来调用远程的Rest接口但这种方式维护起来很麻烦,而且有很多弊端。一、环境搭建1、首先搭建SpringBoot框架使用SpringInitializr快速搭建SpringBoot框架时可能会遇到访问超时的问题。此问题有两种解决的办法:①将服务源改成https://start.aliyun.com,这种方法是采用alibaba的springboot架构模型,会和常规的模型有出入。(这种方法有的时候搭建出来没有pom文件,不能被识别为maven项目,这种情况采用第二种方法即可)②将服务源改成http:/

  7. SpringCloudAlibaba学习(解决SpringBoot初始化以及Nginx启动出错问题) - 2

    微服务强调每个服务都是单独的数据库在不使用微服务的情况下可以采用分布式架构,通过Template来调用远程的Rest接口但这种方式维护起来很麻烦,而且有很多弊端。一、环境搭建1、首先搭建SpringBoot框架使用SpringInitializr快速搭建SpringBoot框架时可能会遇到访问超时的问题。此问题有两种解决的办法:①将服务源改成https://start.aliyun.com,这种方法是采用alibaba的springboot架构模型,会和常规的模型有出入。(这种方法有的时候搭建出来没有pom文件,不能被识别为maven项目,这种情况采用第二种方法即可)②将服务源改成http:/

随机推荐