Spring Cloud Alibaba(一)

整合nacos

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

Spring Cloud Alibaba(一)_第1张图片

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

    
        order
        stock
    

    
        2.3.12.RELEASE
        Hoxton.SR12
        2.2.9.RELEASE
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        
    

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

3.1、pom.xml



    
        small-shop
        com.xice.shop
        0.0.1-SNAPSHOT
    
    4.0.0

    stock

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
    

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中看到两个服务注册成功

Spring Cloud Alibaba(一)_第2张图片

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

你可能感兴趣的:(nacos,Spring,Cloud,Alibaba,java,spring,cloud,微服务)