Java之 Spring Cloud 微服务搭建(第一个阶段)【一】【SpringBoot项目实现商品服务器端是调用

架构学习资料

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

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

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-logging

org.springframework.boot

spring-boot-starter-test

test

org.projectlombok

lombok

1.18.4

provided

org.springframework.cloud

spring-cloud-dependencies

Greenwich.RELEASE

pom

import

spring-snapshots

Spring Snapshots

http://repo.spring.io/libs-snapshot-local

true

spring-milestones

Spring Milestones

http://repo.spring.io/libs-milestone-local

false

spring-releases

Spring Releases

http://repo.spring.io/libs-release-local

false

spring-snapshots

Spring Snapshots

http://repo.spring.io/libs-snapshot-local

true

spring-milestones

Spring Milestones

http://repo.spring.io/libs-milestone-local

false

org.springframework.boot

spring-boot-maven-plugin

删除父工程的src文件

在这里插入图片描述

(3)创建子模块

1)创建product_service子模块
(一)工程搭建

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(二)引入依赖

在这里插入图片描述

<?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”>

spring_cloud_demo

cn.itbluebox

1.0-SNAPSHOT

4.0.0

product_service

mysql

mysql-connector-java

5.1.32

org.springframework.boot

spring-boot-starter-data-jpa

(三)创建DAO相关接口和子类
01)创建Product(商品实体类)

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.product.entity;

import lombok.Data;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

import java.math.BigDecimal;

/*

商品实体类

*/

@Data

@Entity

@Table(name = “tb_product”)

public class Product {

@Id

private Long id;

private String productName;

private Integer status;

private BigDecimal price;//Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算

private String productDesc;

private String caption;

}

02)创建ProductDao接口

在这里插入图片描述

其中ProductDao接口继承了JpaRepositoryJpaSpecificationExecutor之后就自动的实现了对Product的增删改查的实现

在这里插入图片描述

package cn.itbluebox.product.dao;

import cn.itbluebox.product.entity.Product;

import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

/*

接口继承

*/

public interface ProductDao extends JpaRepository<Product, Long>, JpaSpecificationExecutor {

}

JpaRepository<Product,Long> 对应泛型的类型第一个是实体类,第二个是主键的类型

JpaSpecificationExecutor<Product> 对应的泛型是实体类

(四)创建Service相关接口和子类
01)创建接口ProductService

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.product.service;

import cn.itbluebox.product.entity.Product;

public interface ProductService {

/*

根据id查询

*/

Product findByID(Long id);

/*

保存

*/

void save(Product product);

/*

更新

*/

void update(Product product);

/*

删除

*/

void delete(Long id);

}

02)创建接口实现类

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.product.service.impl;

import cn.itbluebox.product.dao.ProductDao;

import cn.itbluebox.product.entity.Product;

import cn.itbluebox.product.service.ProductService;

import org.springframework.beans.factory.annotation.Autowired;

@Service

public class ProductServiceImpl implements ProductService {

@Autowired

private ProductDao productDao;

@Override

public Product findByID(Long id) {

return productDao.findById(id).get();

}

@Override

public void save(Product product) {

productDao.save(product);

}

@Override

public void update(Product product) {

productDao.save(product);

}

@Override

public void delete(Long id) {

productDao.deleteById(id);

}

}

03)创建Controller

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.product.controller;

import cn.itbluebox.product.entity.Product;

import cn.itbluebox.product.service.ProductService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.*;

@RestController

@RequestMapping(“/product”)

public class ProductController {

@Autowired

private ProductService productService;

@RequestMapping(value = “/{id}”, method = RequestMethod.GET)

public Product findById(@PathVariable Long id) {

return productService.findByID(id);

}

@RequestMapping(method = RequestMethod.POST)

public String save(@RequestBody Product product) {

productService.save(product);

return “保存成功”;

}

@RequestMapping(method = RequestMethod.PUT)

public String update(@RequestBody Product product) {

productService.update(product);

return “更新成功”;

}

@RequestMapping(value = “/{id}”, method = RequestMethod.DELETE)

public String delete(@PathVariable Long id) {

productService.delete(id);

return “删除成功”;

}

}

2)配置启动类(ProductApplication

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.product;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.autoconfigure.domain.EntityScan;

@SpringBootApplication

@EntityScan(“cn.itbluebox.product.entity”)

public class ProductApplication {

public static void main(String[] args) {

SpringApplication.run(ProductApplication.class,args);

}

}

3)配置配置文件

在这里插入图片描述

在这里插入图片描述

server:

port: 9001 #端口

spring:

application:

name: service-product #服务名称

datasource:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=utf8

username: root

password: root

jpa:

database: MySQL

show-sql: true

open-in-view: true

4)运行测试

在这里插入图片描述

启动成功

在这里插入图片描述

在数据库当中插入一些数据

在这里插入图片描述

浏览器访问路径查询数据

http://localhost:9001/product/1

查询成功

在这里插入图片描述

2)创建order_service子模块
(一)工程搭建

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(二)添加依赖

在这里插入图片描述

<?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”>

spring_cloud_demo

cn.itbluebox

1.0-SNAPSHOT

4.0.0

order_service

mysql

mysql-connector-java

5.1.32

org.springframework.boot

spring-boot-starter-data-jpa

(三)完善配置文件

在这里插入图片描述

server:

port: 9002 #端口

spring:

application:

name: service-order #服务名称

datasource:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=utf8

username: root

password: root

jpa:

database: MySQL

show-sql: true

open-in-view: true

(四)创建启动类

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.order;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.autoconfigure.domain.EntityScan;

@SpringBootApplication

@EntityScan(“cn.itbluebox.order.entity”)

public class OrderApplication {

public static void main(String[] args) {

SpringApplication.run(OrderApplication.class,args);

}

}

(五) 编写Controller

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.order.controller;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.*;

@RestController

@RequestMapping(“/order”)

public class OrderController {

/*

参数:商品ID

通过订单系统,调用商品服务

1、需要配置商品对象

2、需要调用商品服务

3、entity.Product

*/

}

(六)创建entity.Product

在这里插入图片描述

在这里插入图片描述

package cn.itbluebox.order.entity;

import lombok.Data;

import java.math.BigDecimal;

/*

商品实体类

*/

@Data

public class Product {

private Long id;

private String productName;

private Integer status;

private BigDecimal price;//Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算

private String productDesc;

private String caption;

}

三、微服务的调用

===================================================================

在用户下单时需要调用商品微服务获取商品数据。那应该怎么做

呢?总人皆知商品微服务提供了供人调用的HTTP接口。所以可以再下定单的时候使用http请求的相关

工具类完成,如常见的HttpClient,OkHttp,当然也可以使用Spring提供的RestTemplate

1、RestTemplate介绍


Spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTFUL的标准,封装了http链接, 我们只需要传入url及返回值类型即可。

相较于之前常用的HttpClientRestTemplate是一种更优雅的调用RESTful服务的方式。

在Spring应用程序中访问第三方REST服务与使用Spring RestTemplate类有关。

RestTemplate类的设计原则与许多其他Spring 模板类(例如JdbcTemplate、JmsTemplate)相同,为执行复杂任务提供了一种具有默认行为的简化方法。

RestTemplate默认依赖JDK提供http连接的能力(HttpURLConnection),如果有需要的话也可以通过setRequestFactory方法替换为例如 Apache HttpComponentsNettyOkHttp等其它HTTP library

考虑到RestTemplate类是为调用REST服务而设计的,因此它的主要方法与REST的基础紧密相连就不足为奇了,后者是HTTP协议的方法:

HEAD、GET、POST、PUT、DELETE和OPTIONS

例如,RestTemplate类具有headForHeaders()、getForObject()、postForObject()、put()、delete()等方法。

2、RestTemplate方法介绍


在这里插入图片描述

3、通过RestTemplate调用微服务


(1)如何调用商品服务?

《MySql面试专题》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

《MySql性能优化的21个最佳实践》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

《MySQL高级知识笔记》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

关注我,点赞本文给更多有需要的人

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

务?

《MySql面试专题》

[外链图片转存中…(img-rgYnQqVo-1715292661934)]

[外链图片转存中…(img-cjcSxxsW-1715292661934)]

《MySql性能优化的21个最佳实践》

[外链图片转存中…(img-goOodWSx-1715292661935)]

[外链图片转存中…(img-KJTOd803-1715292661935)]

[外链图片转存中…(img-xV6FfsP2-1715292661935)]

[外链图片转存中…(img-bX9lsm5x-1715292661935)]

《MySQL高级知识笔记》

[外链图片转存中…(img-P66yi7vS-1715292661936)]

[外链图片转存中…(img-Rc81mGg7-1715292661936)]

[外链图片转存中…(img-THlshlvg-1715292661937)]

[外链图片转存中…(img-VyeJlKWS-1715292661937)]

[外链图片转存中…(img-606r7tV5-1715292661937)]

[外链图片转存中…(img-JcaGQsgI-1715292661938)]

[外链图片转存中…(img-ThYnxBIm-1715292661938)]

[外链图片转存中…(img-3akB9J2S-1715292661939)]

[外链图片转存中…(img-qYpIyIJA-1715292661939)]

[外链图片转存中…(img-eqf9imkl-1715292661939)]

文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图

[外链图片转存中…(img-zZKVdcJI-1715292661940)]

关注我,点赞本文给更多有需要的人

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值