遵义网站建公司,网站建设覀金手指科杰,辽宁建设工程信息网联合体投标,手机视频网站开发文章目录 前言一、案例准备1. 技术选型2. 模块设计3. 微服务调用 二、创建父工程三、创建基础模块四、创建用户微服务五、创建商品微服务六、创建订单微服务 前言
微服务环境搭建 使用的电商项目中的商品、订单、用户为案例进行讲解。 一、案例准备
1. 技术选型
maven3.3.9 数据库MySQL 5.7 持久层: SpingData Jpa 其他: SpringCloud Alibaba 技术栈
2. 模块设计
springcloud-alibaba 父工程 shop-common 公共模块【实体类】 shop-user 用户微服务 【端口: 807x】 shop-product 商品微服务 【端口: 808x】 shop-order 订单微服务 【端口: 809x】 3. 微服务调用 在微服务架构中最常见的场景就是微服务之间的相互调用。我们以电商系统中常见的用户下单为例来演示微服务的调用客户向订单微服务发起一个下单的请求在进行保存订单之前需要调用商品微服务查询商品的信息。 我们一般把服务的主动调用方称为服务消费者把服务的被调用方称为服务提供者。 在这种场景下订单微服务就是一个服务消费者 商品微服务就是一个服务提供者。
二、创建父工程
project xmlnshttp://maven.apache.org/POM/4.0.0
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.3.RELEASE/version/parentgroupIdcom.itheima/groupIdartifactIdspringcloud-alibaba/artifactIdversion1.0-SNAPSHOT/versionpackagingpom/packagingpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-cloud.versionGreenwich.RELEASE/spring-cloud.versionspring-cloud-alibaba.version2.1.0.RELEASE/spring-cloudalibaba.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement
/project版本对应 三、创建基础模块
创建 shop-common 模块在pom.xml中添加依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud-alibaba/artifactIdgroupIdcom.itheima/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdshop-common/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.56/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.6/version/dependency/dependencies
/project创建实体类
//用户
Entity(name shop_user)
Data
public class User {IdGeneratedValue(strategy GenerationType.IDENTITY)private Integer uid;//主键private String username;//用户名private String password;//密码private String telephone;//手机号
}//商品
Entity(name shop_product)
Data
public class Product {IdGeneratedValue(strategy GenerationType.IDENTITY)private Integer pid;//主键private String pname;//商品名称private Double pprice;//商品价格private Integer stock;//库存
}//订单
Entity(name shop_order)
Data
public class Order {IdGeneratedValue(strategy GenerationType.IDENTITY)private Long oid;//订单idprivate Integer uid;//用户idprivate String username;//用户名private Integer pid;//商品idprivate String pname;//商品名称private Double pprice;//商品单价private Integer number;//购买数量
}四、创建用户微服务
步骤: 1 创建模块 导入依赖 2 创建SpringBoot主类 3 加入配置文件 4 创建必要的接口和实现类(controller service dao)
新建一个 shop-user 模块然后进行下面操作
创建pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud-alibaba/artifactIdgroupIdcom.itheima/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdshop-user/artifactIddependenciesdependencygroupIdcom.itheima/groupIdartifactIdshop-common/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies
/project编写主类
SpringBootApplication
EnableDiscoveryClient
public class UserApplication {public static void main(String[] args) {SpringApplication.run(UserApplication.class args);}
}创建配置文件
server:port: 8071spring:application:name: service-productdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8useSSLtrueusername: rootpassword: rootjpa:properties:hibernate:hbm2ddl:auto: updatedialect: org.hibernate.dialect.MySQL5InnoDBDialect五、创建商品微服务
创建一个名为 shop_product 的模块并添加springboot依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud-alibaba/artifactIdgroupIdcom.itheima/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdshop-product/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.itheima/groupIdartifactIdshop-common/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies
/project创建工程的主类
package com.itheima;SpringBootApplication
public class ProductApplication {public static void main(String[] args) {SpringApplication.run(ProductApplication.class args);}
}创建配置文件application.yml
server:port: 8081spring:application:name: service-productdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8useSSLtrueusername: rootpassword: rootjpa:properties:hibernate:hbm2ddl:auto: updatedialect: org.hibernate.dialect.MySQL5InnoDBDialect创建ProductDao接口
package com.itheima.dao;public interface ProductDao extends JpaRepositoryProduct,Integer {
}创建ProductService接口和实现类
package com.itheima.service.impl;Service
public class ProductServiceImpl implements ProductService {Autowiredprivate ProductDao productDao;Overridepublic Product findByPid(Integer pid) {return productDao.findById(pid).get();}
}创建Controller
RestController
Slf4j
public class ProductController {Autowiredprivate ProductService productService;GetMapping(/product/{pid})public Product product(PathVariable(pid) Integer pid) {Product product productService.findByPid(pid);log.info(查询到商品: JSON.toJSONString(product));return product;
}
}启动工程等到数据库表创建完毕之后加入测试数据
INSERT INTO shop_product VALUE(NULL,小米,1000,5000);
INSERT INTO shop_product VALUE(NULL,华为,2000,5000);
INSERT INTO shop_product VALUE(NULL,苹果,3000,5000);
INSERT INTO shop_product VALUE(NULL,OPPO,4000,5000);通过浏览器访问服务
六、创建订单微服务
创建一个名为 shop-order 的模块,并添加springboot依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdspringcloud-alibaba/artifactIdgroupIdcom.itheima/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdshop-order/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.itheima/groupIdartifactIdshop-common/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies
/project创建工程的主类
package com.itheima;SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}
}创建配置文件application.yml
server:port: 8091
spring:application:name: service-productdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezoneUTCuseUnicodetruecharacterEncodingutf-8useSSLtrueusername: rootpassword: rootjpa:properties:hibernate:hbm2ddl:auto: updatedialect: org.hibernate.dialect.MySQL5InnoDBDialect创建OrderDao接口
package com.itheima.dao;public interface OrderDao extends JpaRepositoryOrder,Long {
}创建OrderService接口和实现类
Service
public class OrderServiceImpl implements OrderService {Autowiredprivate OrderDao orderDao;Overridepublic void save(Order order) {orderDao.save(order);}
}创建RestTemplate
SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}Beanpublic RestTemplate getRestTemplate() {return new RestTemplate();}
}创建Controller
package com.itheima.controller;RestController
Slf4j
public class OrderController {Autowired
private RestTemplate restTemplate;Autowired
private OrderService orderService;//准备买1件商品
GetMapping(/order/prod/{pid})
public Order order(PathVariable(pid) Integer pid) {log.info(客户下单这时候要调用商品微服务查询商品信息);//通过restTemplate调用商品微服务Product product restTemplate.getForObject(http://localhost:8081/product/ pid, Product.class);log.info(商品信息,查询结果: JSON.toJSONString(product));Order order new Order();order.setUid(1);order.setUsername(测试用户);order.setPid(product.getPid());order.setPname(product.getPname());order.setPprice(product.getPprice());order.setNumber(1);orderService.save(order);return order;}
}启动工程,通过浏览器访问服务进行测试 本文的引用仅限自我学习如有侵权请联系作者删除。 参考知识 传智教育·黑马程序员