栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud01

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud01

1、微服务架构概述

将单元应用划分为一组小的服务,各服务独立部署,独立运行,服务之间相互调用,互相配合完成。SpringCloud = 分布式微服务架构的一站式解决方案,多种微服务架构落地技术的几何体。 2、技术栈更新

3、版本选型

每个版本都有对应的SpringBoot版本,版本选型官网链接:版本选型官网链接

4、环境搭建

父工程构建

第一步:新建工程

第二步:字符编码

第三步:注解激活

第四步:编译版本

第五步:文件过滤

父工程pom.xml文件整理

第一步:文件管理

第二步:内容修改




  4.0.0

  org.example
  com.cloud2022
  1.0-SNAPSHOT
  pom 

  
  
    UTF-8
    1.8
    1.8
    4.12
    1.2.17
    1.16.18
    5.1.47
    1.1.16
     
    3.4.3

  

  
  
    
      
      
        org.springframework.boot
        spring-boot-dependencies
        2.2.2.RELEASE
        pom
        import
      
      
      
        org.springframework.cloud
        spring-cloud-dependencies
        Hoxton.SR1
        pom
        import
      
      
      
        com.alibaba.cloud
        spring-cloud-alibaba-dependencies
        2.1.0.RELEASE
        pom
        import
      
      
        mysql
        mysql-connector-java
        ${mysql.version}
      
      
        com.alibaba
        druid
        ${druid.version}
      
      
         
          com.baomidou
          mybatis-plus-boot-starter
          ${mybatis-plus.spring.boot.version}
        
      
        junit
        junit
        ${junit.version}
      
      
        log4j
        log4j
        ${log4j.version}
      
      
        org.projectlombok
        lombok
        ${lombok.version}
        true
      
    
  

  
    
      
        
          maven-clean-plugin
          3.1.0
        
        
          maven-site-plugin
          3.7.1
        
        
          maven-project-info-reports-plugin
          3.0.0
        
      
    
    
      
        org.apache.maven.plugins
        maven-site-plugin
        
          en,fr
        
      
    
  



dependencyManagement与dependencies区别

dependencyManagement用作总pom文件中,便于统一管理版本;dependencyManagement只是声明依赖,并不引入,子项目需重新声明依赖;

其他技巧:

跳过测试

install发布

子模块搭建-支付模块

第一步:建module

第二步:改pom



    
        cloud2022
        org.example
        1.0-SNAPSHOT
    
    4.0.0

    payment8001

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        




        
            com.baomidou
            mybatis-plus-boot-starter
        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.10
        
        
        
            mysql
            mysql-connector-java
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    


第三步:写yml
application.yml

server:
  port: 8001

spring:
  application:
    name : payment8001

  datasource:
    url: jdbc:mysql://localhost:3306/springboot-mybatisplus?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
    username: root
    password: 123456
    driver-class-name=com: mysql.cj.jdbc.Driver
#    type: com.alibaba.druid.pool.DruidDataSource

#2、mybatis-plus配置
mybatis-plus:
  #2-1 lodging 日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #2-2 deleted 逻辑删除
  global-config :
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0
  mapper-locations: classpath:mapper/*.xml

第四步:主启动
PaymentApplication .java

package com.payment;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanbasePackages = "com.payment")
@MapperScan("com.payment.Mapper")
public class PaymentApplication {

    public static void main(String[] args) {
        SpringApplication.run(PaymentApplication.class, args);
    }
    
}

第五步:业务类
执行:http://localhost:8001/payment/1
结果:{“code”:200,“msg”:“成功”,“date”:null}

注意:
——使用result封装数据结果集;

子模块搭建-订单模块
搭建步骤与支付模块相同

注意:
——调用支付模块,不需要业务处理逻辑;

——需要config配置RestTemplate;

package com.consumer.Config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ApplicationConfig {
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

——controller类
注意:

请求方式为get;post无法使用RequestBody注解;

package com.consumer.Controller;

import com.consumer.Entity.Payment;
import com.consumer.Entity.Result;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/consumer")
@Slf4j
@RequiredArgsConstructor
public class PaymentController {

    public static final String payment_URL ="http://localhost:8001";

    private final RestTemplate restTemplate  ;

    @GetMapping("/get/save")
    public Result saveEntity(Payment payment) {
        return restTemplate.postForObject(payment_URL+"/payment/save",payment,Result.class);
    }

    @GetMapping("/{id}")
    public Result getEntity(@PathVariable("id") Integer id) {
        return restTemplate.getForObject(payment_URL+"/payment/"+id,Result.class);
    }
}
总结

1、子工程-支付模块

pom.xml



    
        cloud2022
        org.example
        1.0-SNAPSHOT
    
    4.0.0

    payment8001

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        




        
            com.baomidou
            mybatis-plus-boot-starter
        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.10
        
        
        
            mysql
            mysql-connector-java
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        

    


yml

server:
  port: 8001

spring:
  application:
    name : payment8001

  datasource:
    url: jdbc:mysql://localhost:3306/springboot-mybatisplus?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
    username: root
    password: 123456
    driver-class-name=com: mysql.cj.jdbc.Driver
#    type: com.alibaba.druid.pool.DruidDataSource

#2、mybatis-plus配置
mybatis-plus:
  #2-1 lodging 日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #2-2 deleted 逻辑删除
  global-config :
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0
  mapper-locations: classpath:mapper/*.xml

controller

package com.payment.Controller;

import com.payment.Entity.Payment;
import com.payment.Entity.Result;
import com.payment.Service.PaymentService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/payment")
@Slf4j
@RequiredArgsConstructor
public class PaymentController {

    private final PaymentService paymentService  ;

    @PostMapping("/save")
    public Result saveEntity(@RequestBody Payment payment) {
        paymentService.saveEntity(payment);
        return new Result(200,"成功","");
    }

    @GetMapping("/{id}")
    public Result saveEntity(@PathVariable("id") Integer id) {
        System.out.println(id);
        return new Result(200,"成功",paymentService.getPayment(id));
    }

}

2、子工程-订单模块

pom.xml



    
        cloud2022
        org.example
        1.0-SNAPSHOT
    
    4.0.0

    consumer

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.10
        
        
        
            mysql
            mysql-connector-java
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        

    


yml

server:
  port: 8002

spring:
  application:
    name : consumer

  datasource:
    url: jdbc:mysql://localhost:3306/springboot-mybatisplus?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
    username: root
    password: 123456
    driver-class-name=com: mysql.cj.jdbc.Driver
#    type: com.alibaba.druid.pool.DruidDataSource

#2、mybatis-plus配置
mybatis-plus:
  #2-1 lodging 日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #2-2 deleted 逻辑删除
  global-config :
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0
#  mapper-locations: classpath:mapper/*.xml

controller

package com.consumer.Controller;

import com.consumer.Entity.Payment;
import com.consumer.Entity.Result;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/consumer")
@Slf4j
@RequiredArgsConstructor
public class PaymentController {

    public static final String payment_URL ="http://localhost:8001";

    private final RestTemplate restTemplate  ;

    @GetMapping("get/save")
    public Result saveEntity(Payment payment) {
        return restTemplate.postForObject(payment_URL+"/payment/save",payment,Result.class);
    }

    @GetMapping("/{id}")
    public Result getEntity(@PathVariable("id") Integer id) {
        return restTemplate.getForObject(payment_URL+"/payment/save/"+id,Result.class);
    }
}

Result

package com.consumer.Entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result{

    private Integer code;

    private String msg;

    private R Date;

}

代码重构
(1)提出公共部分
(2)install发布

(3)在其他服务中引入

      
            com.commons
            commons
            1.0-SNAPSHOT
            compile
        

采坑:发布的服务一定要有gruopId字段,与引入的groupId一致

    
        cloud2022
        org.example
        1.0-SNAPSHOT
    
    4.0.0
    com.commons
    commons
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号