课程资料:https://pan.baidu.com/s/10j_xh-RgRiWD8vqHSv5lGw?pwd=4rwa 提取码:4rwa
一、项目落本地
将资料下载好之后压缩项目 用idea打开 配置maven
由于黑马给的代码是完成品 我们需要一步一步跟 把多余的模块删去 只留下user和order 别忘记在父项目的pom文件中删去相应模块
这时候user-service order-service相继都会报错 那是因为里面的内容都是相互调用 你把别的模块删掉之后肯定会引发连锁反应 我们先不着急 配置好环境再修改代码
在navacat中创建两个数据库 运行资料中给的sql文件
分别在两个项目的yml配置文件中去配置数据库连接
要注意的是 url中 项目初始写的是 mysql:3306 在这里 mysql对应的是你本地数据库的主机名 默认为localhost 3306是数据库的端口号 默认是3306 账号和密码以自己家的为准
导入的项目中由于是完成品 在yml文件中和pom依赖中添加了很多之后会用到的 但我们要一步一步跟 所以得删去最后只留这些
user模块的yml
order的yml
user的controller
order的controllerr
user的启动类
order的启动类
父项目中的pom不用动 在两个子项目的pom中只留springboot mysql mybati基础的依赖 其他你没见过 没用到过的 都先删掉
user的pom
order的pom
至此 可以启动两个启动类了 完成p7的老师的相同效果
二、服务远程调用
这个部分说白了 其实就是数据库的多表联查 一个订单里有用户id 我们需要根据这个用户id 在查询订单的时候把用户的具体信息也查出来 在没学习微服务的时候 最常见的做法就是在sql语句中进行联查 把信息查出来再封装成对象 但是在微服务中 不同模块之间的数据库是独立的 也就是说 订单模块是访问不到用户模块的数据库的 这时候就需要用到微服务的远程调用
首先在order启动类中配置一个restTemplate 这个类就是拿来实现远程调用的
黑马的老师说 需要在配置类中配置 启动类也属于配置类 那是否能在其他类中配置呢?yml配置文件中可以配置吗?
package cn.itcast.order;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
/**
* 创建RestTemplate并注入Spring容器
*/
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
有了restTemplate就可以生成一个该类的对象 在service中使用它的方法
调用的方式 我个人觉得 就是在内置的服务器中通过人工写好的路径去访问数据 然后获取数据 User.class的意思就是将数据封装成User对象 否则返回值将会是一个json
就像是你写论文里面 有一处地方引用了别人的文章 你在这写 此处引用某某某的文章 没写具体内容 但是老师要求你写具体内容(于是你就去浏览器上找这个人的文章原文) 把引用的部分打包到你的论文中 括号中的内容就类似于远程调用的作用
最后成果