【springcloud】环境搭建与Rest使快速上手()

  本篇文章为你整理了【springcloud】环境搭建与Rest使快速上手()的详细内容,包含有 【springcloud】环境搭建与Rest使快速上手,希望能帮助你了解 【springcloud】环境搭建与Rest使快速上手。

   #SpringCloud环境搭建 --- Rest使用

  个人主页:https:///xbudian/

  今天来到SpringCloud的学习,我们从spring boot微服务阶段,学习到了用springboot去创建很多的微服务,但是这么多微服务我们如果去管理,以及相互之间的联系呢?

  而到了我们学习springcloud阶段,其实相对而言是变简单的,不需要写很多代码以及什么操作,主要就是接收思想,了解其中的机制,而springCloud项目基于springboot项目,只需要几行简单的配置即可开始使用;

  
今天来到SpringCloud的学习,我们从spring boot微服务阶段,学习到了用springboot去创建很多的微服务,但是这么多微服务我们如果去管理,以及相互之间的联系呢?

  
而到了我们学习springcloud阶段,其实相对而言是变简单的,不需要写很多代码以及什么操作,主要就是接收思想,了解其中的机制,而springCloud项目基于springboot项目,只需要几行简单的配置即可开始使用;

  那来到了我们最熟悉的官网:https://spring.io/

  进入spring cloud的学习,可以去读读这里的话,我读懂了,不告诉你

  从springcloud的学习,我们可以看这张图,我们学习这里面几个部分

  Rest环境搭建

  环境说明:jdk1.8,idea2019,maven3.6.X,springcloud最新版2021.0.3,mybatis-plus

  我们首先搭建一个父工程项目,创建一个空的普通的maven项目,我们直接把src目录删除掉,pom文件写下面的使用父工程管理依赖,这里都是与文章日期最新依赖。

  

 properties 

 

   project.build.sourceEncoding UTF-8 /project.build.sourceEncoding

   maven.compiler.source 1.8 /maven.compiler.source

   maven.compiler.target 1.8 /maven.compiler.target

   junit.version 4.12 /junit.version

   log4j.version 1.2.17 /log4j.version

   lombok.version 1.18.24 /lombok.version

   springcloud-version 2021.0.3 /springcloud-version

   /properties

   dependencyManagement

   dependencies

   dependency

   !--springcloud依赖--

   groupId org.springframework.cloud /groupId

   artifactId spring-cloud-dependencies /artifactId

   version ${springcloud-version} /version

   type pom /type

   scope import /scope

   /dependency

   !-- springboot依赖--

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-dependencies /artifactId

   version 2.7.0 /version

   type pom /type

   scope import /scope

   /dependency

   !--mysql驱动--

   dependency

   groupId mysql /groupId

   artifactId mysql-connector-java /artifactId

   version 8.0.28 /version

   /dependency

   !-- https://mvnrepository.com/artifact/com.alibaba/druid --

   dependency

   groupId com.alibaba /groupId

   artifactId druid /artifactId

   version 1.2.11 /version

   /dependency

  
groupId org.apache.maven.plugins /groupId

   artifactId maven-resources-plugin /artifactId

   configuration

   !--以$开头结尾 符合在src/main/resources路径下面访问到 主要是yml文件或者properties文件--

   delimiters

   delimit $ /delimit

   /delimiters

   /configuration

   /plugin

   /plugins

   /build

  

 

  有了父工程项目,我们再准备一个数据库环境,写一个api类,这里我们新建一个简单的账户表,往里面插入几条简单的数据

  

DROP TABLE IF EXISTS `account`;

 

  CREATE TABLE `account` (

   `account_id` int(11) NOT NULL,

   `account_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,

   `account_pwd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,

   PRIMARY KEY (`account_id`)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

  -- ----------------------------

  -- Records of account

  -- ----------------------------

  INSERT INTO `account` VALUES (1, zhangsan, 333);

  INSERT INTO `account` VALUES (2, lisi, 444);

  INSERT INTO `account` VALUES (3, wangwu, 555);

  INSERT INTO `account` VALUES (4, zhangliu, 666);

  INSERT INTO `account` VALUES (5, qiqi, 777);

  INSERT INTO `account` VALUES (6, baba, 888);

  

 

  新建一个maven普通项目起名叫springcloud-api,里面呢,放一个这样的实体类,与表的关系对应起来的一个简单对象,使用了lombok,这里大家可以自行去了解

  1、导入依赖

  

 dependency 

 

   groupId org.projectlombok /groupId

   artifactId lombok /artifactId

   /dependency

  

 

  我们可以看到这里如果正确会有一个小圆圈,如果你这里没有,那就要检查下父工程依赖了

  2、编写配置,这里没有什么配置,所以就是滤过

  3、编写对应代码

  provider-服务端提供者

  再新建一个maven普通项目模块,我们做服务的提供者

  1、导入依赖

  

 dependencies 

 

   dependency

   groupId com.xuexi /groupId

   artifactId springcloud-api /artifactId

   version 1.0-SNAPSHOT /version

   /dependency

   dependency

   groupId mysql /groupId

   artifactId mysql-connector-java /artifactId

   /dependency

   dependency

   groupId com.alibaba /groupId

   artifactId druid /artifactId

   /dependency

   dependency

   groupId ch.qos.logback /groupId

   artifactId logback-core /artifactId

   /dependency

   dependency

   groupId com.baomidou /groupId

   artifactId mybatis-plus-boot-starter /artifactId

   /dependency

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-test /artifactId

   /dependency

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-web /artifactId

   /dependency

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-devtools /artifactId

   /dependency

   /dependencies

  

 

  2、编写配置

  新建一个application.yml文件,内容如下:

  

server:

 

   port: 8001

  spring:

   application:

   name: springcloud-provider-account

   datasource:

   driverClassName: com.mysql.cj.jdbc.Driver

   url: jdbc:mysql://localhost:3306/lianxi?useUnicode=true zeroDateTimeBehavior=convertToNull autoReconnect=true characterEncoding=utf-8

   username: root

   password:

   type: com.alibaba.druid.pool.DruidDataSource #使用阿里的数据源

  # mybatis-plus配置日志

  mybatis-plus:

   configuration:

   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

   type-aliases-package: com.xuexi.pojo

   mapper-locations: classpath:mapper/*.xml

   global-config:

   db-config:

   table-underline: true #实体类驼峰转下划线,默认就是

  

 

  3、编写代码,服务提供者我们只需要编写dao层和service层,这里使用了mybaits-plus所以比较简单,直接给大家截图

  dao层

  service层

  这里我们可以编写一个controller进行下测试

  

@RestController

 

  public class AccountController {

   @Autowired

   AccountService accountService;

   @PostMapping("/account/add")

   public boolean addAccount(Account account){

   return accountService.save(account);

   @GetMapping("/account/get/{id}")

   public Account get(@PathVariable("id") long id){

   return accountService.getById(id);

   @GetMapping("/account/list")

   public List Account getAll(){

   return accountService.list(null);

  

 

  测试成功
 

  consumer-消费者

  同样的我们再建一个普通的maven子工程项目,我们进行服务的消费

  1、导入依赖

  

 dependencies 

 

   dependency

   groupId com.xuexi /groupId

   artifactId springcloud-api /artifactId

   version 1.0-SNAPSHOT /version

   /dependency

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-starter-web /artifactId

   /dependency

   dependency

   groupId org.springframework.boot /groupId

   artifactId spring-boot-devtools /artifactId

   /dependency

   /dependencies

  

 

  2、编写配置

  新建一个application.yml

  

server:

 

   port: 80

  

 

  3、编写代码

  代码编写前,我们认识一个东西,就是我们的标题,REST这个东西,这里我觉得你学到这里应该很容易理解,所以我觉得还是先上代码吧

  首先编写一个config配置类,我们把RestTemplate这个对象接管到spring容器中

  

@Configuration

 

  public class BeanConfig {

   @Bean

   public RestTemplate getRestTemplate(){

   return new RestTemplate();

  

 

  接着编写我们的消费代码,ConsumerController

  

@RestController

 

  public class ConsumerController {

   private static final String REST_URL_PREFIX = "http://localhost:8001";

   @Autowired

   RestTemplate restTemplate;

   @PostMapping("/cousumer/add")

   public boolean addAccount(Account account) {

   return restTemplate.postForObject(REST_URL_PREFIX+"/account/add",account,boolean.class);

   @GetMapping("/cousumer/get/{id}")

   public Account get(@PathVariable("id") long id) {

   return restTemplate.getForObject(REST_URL_PREFIX+"/account/get/"+id,Account.class);

   @GetMapping("/cousumer/list")

   public List Account getAll() {

   return restTemplate.getForObject(REST_URL_PREFIX+"/account/list",List.class);

  
 

 

  上面我都没有给大家说编写springboot启动类,别到这里还没启动呀,每一个项目下面,编写一个这样的启动类

  

@SpringBootApplication

 

  public class Consumer_80 {

   public static void main(String[] args) {

   SpringApplication.run(Consumer_80.class,args);

  

 

  我们启动下消费方,看下是否可以远程调用服务方服务,测试成功,远程调用了我们的服务消费掉

  其实我们都学过网络请求,RestTemplate其实就是封装好的一个请求对象,然后可以通过getpostdeleteput请求,里面也没有多少方法,点以下就都出来了,这么简单,很容易看懂并学会吧!

  其实就像前后段分离,发送异步请求,通过不断地请求服务,然后去实现功能,一种直连的方式,对地址和端口请求服务

  但是我们可以发现,这样是有缺点的,比如provider宕机了,consumer请求是请求不到了的,而且也不能做一些检测,负载均衡,轮询等方式;那我们接着学习再加一层
 

  下一篇我们尝试下使用Eureka注册中心,持续更新中·····

  赶紧点个关注吧,之后还会更新整个springcloud系列,关注不迷路,点个赞也行啊,bye~

  以上就是【springcloud】环境搭建与Rest使快速上手()的详细内容,想要了解更多 【springcloud】环境搭建与Rest使快速上手的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: