SpringCloud学习笔记(尚硅谷)
版本号
先创建工程
父工程 new project 父工程选pom
后续项目都是jar工程的
消费者
没有service层,只负责消费,不需要创建,所以就没有service.
消费就使用RestTemplate
@RestController
public class DeptController_Consumer
{
//private static final String REST_URL_PREFIX = “http://localhost:8001”;
private static final String REST_URL_PREFIX = “http://MICROSERVICECLOUD-DEPT”;
/**
- 使用 使用restTemplate访问restful接口非常的简单粗暴无脑。 (url, requestMap,
- ResponseBean.class)这三个参数分别代表 REST请求地址、请求参数、HTTP响应转换被转换成的对象类型。
*/
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = “/consumer/dept/add”)
public boolean add(Dept dept)
{
return restTemplate.postForObject(REST_URL_PREFIX + “/dept/add”, dept, Boolean.class);
}
@RequestMapping(value = “/consumer/dept/get/{id}”)
public Dept get(@PathVariable(“id”) Long id)
{
return restTemplate.getForObject(REST_URL_PREFIX + “/dept/get/” + id, Dept.class);
}
@SuppressWarnings(“unchecked”)
@RequestMapping(value = “/consumer/dept/list”)
public List list()
{
return restTemplate.getForObject(REST_URL_PREFIX + “/dept/list”, List.class);
}
// 测试@EnableDiscoveryClient,消费端可以调用服务发现
@RequestMapping(value = “/consumer/dept/discovery”)
public Object discovery()
{
return restTemplate.getForObject(REST_URL_PREFIX + “/dept/discovery”, Object.class);
}
}
Eureka注册中心
<!--eureka-server服务端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
然后yml配置文件
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己(只有客户端才注册,自己是服务端,不需要注册自己)。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http:// e u r e k a . i n s t a n c e . h o s t n a m e : {eureka.instance.hostname}: eureka.instance.hostname:{server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
然后启动类
package com.atguigu.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer // EurekaServer服务器端启动类,接受其它微服务注册进来
public class EurekaServer7001_App {
public static void main(String[] args) {
SpringApplication.run(EurekaServer7001_App.class, args);
}
}
访问 localhost:7001 即可
改造原来的生产者
1.先给生产者微服务入住进来Eureka
坐标依赖Eureka client端.
org.springframework.cloud spring-cloud-starter-eureka org.springframework.cloud spring-cloud-starter-config修改yml配置文件
server:
port: 8001
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径
type-aliases-package: com.atguigu.springcloud.entities # 所有Entity别名类所在包
mapper-locations:
- classpath:mybatis/mapper/**/*.xml # mapper映射文件
spring:
application:
name: microservicecloud-dept
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型
driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包
url: jdbc:mysql://localhost:3306/cloudDB01 # 数据库名称
username: root
password: 123456
dbcp2:
min-idle: 5 # 数据库连接池的最小维持连接数
initial-size: 5 # 初始化连接数
max-total: 5 # 最大连接数
max-wait-millis: 200 # 等待连接获取的最大超时时间
eureka:
client: #客户端注册进eureka服务列表内
service-url:
defaultZone: http://localhost:7001/eureka #入住到7001端口的Eureka, 这个是地址,地址是Eureka的服务端的地址
修改启动类
@SpringBootApplication
@EnableEurekaClient //本服务启动后会自动注册进eureka服务中
public class DeptProvider8001_App
{
public static void main(String[] args)
{
SpringApplication.run(DeptProvider8001_App.class, args);
}
}
修改入住Eureka微服务的标识名
解决办法,找到对应的微服务的yml文件
找到instance-id修改即可
还需要修改访问ip地址 就是 prefer-ip-address 改成 true 就可以了
eureka:
client: #客户端注册进eureka服务列表内
service-url:
#defaultZone: http://localhost:7001/eureka #入住到Eureka, 这个是地址
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: microservicecloud-dept8001 #改注册到Eureka的别名
prefer-ip-address: true #访问路径可以显示IP地址
监控信息完善
1.在被监控信息的工程添加坐标依赖
org.springframework.boot
spring-boot-starter-actuator
2.在父工程添加信息
构建
microservicecloud
src/main/resources
true
org.apache.maven.plugins
maven-resources-plugin
$
3.在子项目yml文件里面添加
追加微服务信息描述
info:
app.name: atguigu-microservicecloud
company.name: www.atguigu.com # 公司名字
build.artifactId: p r o j e c t . a r t i f a c t I d project