一个毕业后差一点进大厂的程序员的进阶之路——既为巩固知识,也为增长粉丝。收藏+关注方便观看后续更新。
痴迷技术,热爱分享。个人微信公众号【一条IT】,每天分享软件,资源,教程,福利。不关注你一定会后悔。
目录
新建下单moudle
1.建moudle
2.改pom
3.写yml
4.主启动
5.业务类
5.1entities
5.2controller
?6.测试
热部署
1.增加依赖和maven插件
2.开启idea自动编译
?工程重构
1.新建cloud-api-commons
2.pom
3.复制实体类
4.clean install
补充1:maven如何固定在侧边栏
补充2:取消idea文件折叠
5.添加依赖?
上期新建了服务提供者支付模块,那么有提供者就要有消费者,今天新建下单Moudle。
新建下单moudle老五步,要牢记
1.建moudle新建moudle和上次一样,不在赘述。名字为:cloud-consumer-order80? ?
80作为端口号,因为默认是80,访问时可以省略,就像我们访问网站时都是不用端口号的,模拟用户下单过程。
2.改pom用户是没有权限操作数据库的,所以该pom没有和数据库操作相关的依赖,yml里也不需要配置数据源。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://·/artifact/org.springframework.boot/spring-boot-starter-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project> 3.写yml server: port: 80 4.主启动和之前无区别,自己练习写。名字:OrderMain80?
5.业务类 5.1entities直接复制payment8001
5.2controller由于不需访问数据库,无service和dao层,更不用写mapper。用户下单后只需要跳转到支付页面,由payment去处理数据库,但是我们没有前端页面,就无法用@controller去找xxx.html,所以怎么处理背后的网页跳转是现在的问题,下面就介绍一个新的类 RestTemplate
RestTemplate是什么?
RestTemplate提供了多种便捷访问远程Http服务的方法,且符合restful,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute,能够大大提高客户端的编写效率。
怎么用?
//请求地址 String url = "http://localhost:8080/testPost"; //入参 RequestBean requestBean = new RequestBean(); requestBean.setTest1("1"); requestBean.setTest2("2"); requestBean.setTest3("3"); RestTemplate restTemplate = new RestTemplate(); ResponseBean responseBean = restTemplate.postForObject(url, requestBean, ResponseBean.class);使用restTemplate访问restful接口非常的简单粗暴无脑。(url, requestMap, ResponseBean.class)这三个参数分别代表 请求地址、请求参数、HTTP响应转换被转换成的对象类型。
RestTemplate方法的名称遵循命名约定,第一部分指出正在调用什么HTTP方法,第二部分指示返回的内容。本例中调用了restTemplate.postForObject方法,post指调用了HTTP的post方法,Object指将HTTP响应转换为您选择的对象类型。还有其他很多类似的方法,可以参考官方api。
在本项目的实际运用
1.新建配置类 ApplicationContextConfig 在config包下
package com.li.springcloud.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class ApplicationContextConfig { @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); } }2.controller调用
package com.li.springcloud.controller; import com.atguigu.springcloud.entities.CommonResult; import com.atguigu.springcloud.entities.Payment; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; @RestController @Slf4j public class OrderController { public static final String PAYMENT_URL = "http://localhost:8001"; @Resource private RestTemplate restTemplate; @GetMapping("/consumer/payment/create") public CommonResult<Payment> create(Payment payment){ return restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class); //写操作 } @GetMapping("/consumer/payment/get/{id}") public CommonResult<Payment> getPayment(@PathVariable("id") Long id){ return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class); } } ?6.测试 热部署为了调试方便,在开发环境会开启热部署,生产环境会关掉
1.增加依赖和maven插件要分开添加
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <addResources>true</addResources> </configuration> </plugin> </plugins> </build> 2.开启idea自动编译crtl+shirt+alt+/? 选第一个?
?工程重构将两个moudle都用到的实体类单独拿出来,通过添加依赖的方式引用
1.新建cloud-api-commons 2.pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://·/artifact/org.springframework.boot/spring-boot-devtools --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.1.0</version> </dependency> </dependencies> </project> 3.复制实体类在文件管理器里复制entities和commonResult,不要在idea复制,会重新计算索引,很慢
4.clean installmaven执行clean和install
补充1:maven如何固定在侧边栏 补充2:取消idea文件折叠 5.添加依赖?先删除的80和8001各自的实体类,然后在pom添加依赖
<dependency> <groupId>com.li.springcloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version> </dependency>?
本期到这结束,下一期学习第一个组件Eureka,需要源码和指导请在评论区说明。
?
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #收藏关注方便观看后续更新 #痴迷技术热爱分享 #不关注你一定会后悔