- 个人主页: 程序员爱摸鱼
- 版权: 本文由【程序员爱摸鱼】原创、在CSDN首发、需要转载请联系博主
- 如果文章对你有帮助、欢迎关注+点赞+收藏(一键三连)哦
- 想寻找共同成长的小伙伴,可以互粉哦
1. 什么是远程调用
1.1 调用方式
2. 搭建环境
2.1 创建父项目:daykaohe6_22
2.1.1配置pom文件
2.2 创建子项目:company-data
2.2 创建子项目:company-http
总结
客户端程序通过接口调用服务端程序,并获得该服务返回的数据的过程,称为远程调用。
“商品管理系统”调用“用户管理系统”的过程,就是“远程调用”。此时“商品管理系统”相当于模拟“浏览器”。
常见的远程调用方式有2种:
RPC:Remote Produce Call远程过程调用,==自定义数据==格式的远程调用方式。基于原生TCP通信,速度快,效率高。
Http:采用http协议远程调用方式,==规定==了数据传输的格式,缺点是消息封装臃肿。现在热门的Rest风格,就可以通过http协议来实现。
常见框架 :
RPC常见框架: dubbo、WebService
Http常见框架:HttpClient、RestTemplat
区别 | HTTP | RPC |
速度 | 较慢 | 快 |
难度 | 简单 | 复杂 |
灵活性 | 灵活,跨平台,跨语言 |
org.springframework.cloud
spring-cloud-build
2.3.5.RELEASE
Hoxton.SR12
2.2.7-SNAPSHOT
3.4.0
1.1.10
2.7.0
0.9.0
2.9.7
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
2.2.7.RELEASE
pom
com.baomidou
mybatis-plus-boot-starter
${mybatis.plus.starter.version}
com.alibaba
druid-spring-boot-starter
${durid.starter.version}
io.springfox
springfox-swagger2
${swagger.version}
io.springfox
springfox-swagger-ui
${swagger.version}
org.springframework.boot
spring-boot-starter-web
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
org.projectlombok
lombok
com.baomidou
mybatis-plus-boot-starter
3.4.0
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-test
com.czxy.
test-mybatis-plus
1.0-SNAPSHOT
test
server:
port: 8081
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/20220622exam?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 1234
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #输出日志
map-underscore-to-camel-case: true
global-config:
db-config:
table-prefix: t_
package com.czxy.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("companys")
public class Companys {
@TableId
private String keyno;
private String cname;
private String oper;
private String industry;
}
@RestController
@RequestMapping("/companys")
public class CompanysContoller {
@Resource
private CompanysMapper companysMapper;
@GetMapping
public BaseResult selectAll(){
List list = companysMapper.selectList(null);
if(list ==null){
return BaseResult.error("查询失败");
}
return BaseResult.ok("查询成功",list);
}
@GetMapping("/{keyno}")
public BaseResult selectById(@PathVariable("keyno") String keyno){
Companys companys = companysMapper.selectById(keyno);
if(companys ==null){
return BaseResult.error("查询失败");
}
return BaseResult.ok("查询成功",companys);
}
@PostMapping
public BaseResult save(@RequestBody Companys companys){
int insert = companysMapper.insert(companys);
if(insert !=1){
return BaseResult.error("添加失败");
}
return BaseResult.ok("添加成功");
}
@DeleteMapping("/{keyno}")
public BaseResult deleteById(@PathVariable("keyno") String keyno){
int i = companysMapper.deleteById(keyno);
if(i !=1){
return BaseResult.error("删除失败");
}
return BaseResult.ok("删除成功");
}
@PutMapping
public BaseResult updata(@RequestBody Companys companys){
int i = companysMapper.updateById(companys);
if(i !=1){
return BaseResult.error("修改失败");
}
return BaseResult.ok("修改成功");
}
}
@Mapper
public interface CompanysMapper extends BaseMapper {
}
@SpringBootApplication
public class TestCompanyApplication {
public static void main(String[] args) {
SpringApplication.run(TestCompanyApplication.class,args);
}
}
@SpringBootApplication
public class TesthttpApplication {
public static void main(String[] args) {
SpringApplication.run(TesthttpApplication.class,args);
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Companys {
private String keyno;
private String cname;
private String oper;
private String industry;
}
@RestController
@RequestMapping("/companys")
public class CompanysContoller {
@Resource
private CompanysService companysService;
@GetMapping
public BaseResult selectAll() {
List list=companysService.list();
return BaseResult.ok("查询成功",list);
}
@GetMapping("/{keyno}")
public BaseResult selectById(@PathVariable("keyno") String keyno){
BaseResult user = companysService.getById(keyno);
return BaseResult.ok("查询成功",user);
}
@PostMapping
public BaseResult save(@RequestBody Companys companys){
try {
companysService.insert(companys);
return BaseResult.ok("添加成功");
} catch (Exception e) {
return BaseResult.error(e.getMessage());
}
}
@DeleteMapping("/{keyno}")
public BaseResult deleteById(@PathVariable("keyno") String keyno){
Boolean i = companysService.deleteById(keyno);
if(i){
return BaseResult.ok("删除成功");
}
return BaseResult.error("删除失败");
}
@PutMapping
public BaseResult updata(@RequestBody Companys companys){
try {
companysService.updateById(companys);
return BaseResult.ok("修改成功");
} catch (Exception e) {
return BaseResult.error(e.getMessage());
}
}
}
package com.czxy.service.impl;
import com.czxy.admin.AdminTest;
import com.czxy.domain.Companys;
import com.czxy.service.CompanysService;
import com.czxy.vo.BaseResult;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@Service
@Transactional
public class CompanysServiceimpl implements CompanysService {
@Resource
private AdminTest adminTest;
@Override
public List list() {
List list= adminTest.list();
return list;
}
@Override
public BaseResult getById(String keyno) {
BaseResult userBaseResult = adminTest.selectById(keyno);
return userBaseResult;
}
@Override
public void insert(Companys companys) {
adminTest.insert(companys);
}
@Override
public Boolean deleteById(String keyno) {
Boolean result=adminTest.delete(keyno);
return result;
}
@Override
public void updateById(Companys companys) {
adminTest.update(companys);
}
}
package com.czxy.admin;
import com.czxy.domain.Companys;
import com.czxy.vo.BaseResult;
import org.checkerframework.checker.units.qual.C;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.List;
@Component
public class AdminTest {
@Resource
private RestTemplate restTemplate;
public List list() {
String url="http://localhost:8081/companys";
ResponseEntity entity = restTemplate.getForEntity(url, BaseResult.class);
List list = (List) entity.getBody().getData();
return list;
}
public BaseResult selectById(String keyno) {
String url="http://localhost:8081/companys/"+keyno;
ResponseEntity> resultResponseEntity = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference>() {
});
return resultResponseEntity.getBody();
}
public void insert(Companys companys) {
String url="http://localhost:8081/companys";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity entity = restTemplate.postForEntity(url, companys, BaseResult.class);
}
public Boolean delete(String keyno) {
String url="http://localhost:8081/companys/"+keyno;
RestTemplate restTemplate = new RestTemplate();
restTemplate.delete(url);
return true;
}
public void update(Companys companys) {
String url="http://localhost:8081/companys";
RestTemplate restTemplate = new RestTemplate();
restTemplate.put(url,companys,BaseResult.class);
}
}
最后进行测试
http://localhost:8082/swagger-ui.html#/
最后只要能调用到就说明你已经学会了哦~
想要了解更多吗?没时间解释了,快来点一点!!!
程序员爱摸鱼
————————————————
版权声明:本文为CSDN博主「程序员爱摸鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lcshen1234?type=blog