Spring cloud(二)
一、SpringCloud快速开发入门
1.搭建和配置一个服务提供者
1、 创建一个SpringBoot工程(SpringBoot的Web工程),并且添加SpringBoot的相关依赖;
2、 创建服务提供者的访问方法,也就是后续消费者如何访问提供者;
Spring Cloud是基于rest的访问,所以我们添加一个Controller,在该Controller中提供一个访问入口:
@RestController
public class HelloController {
@RequestMapping(value = "/helloworld", method = RequestMethod.GET)
public String helloworld() {
return "Hello world";
}
}
3、 启动运行该SpringBoot程序,访问该controller;
2. 搭建和配置一个服务消费者
服务消费者也是一个SpringBoot项目,服务消费者主要用来消费服务提供者提供的服务;
1、 创建一个SpringBoot工程(SpringBoot的Web工程),并且添加SpringBoot的相关依赖;
2、 定义自定义类RestTemplateConfig类
/**
* 标记当前类是一个Spring配置类,用于模拟Spring的配置文件
*/
@Configuration
public class RestTemplateConfig {
//@Bean标记当前方法是一个Spring配置方法,用于模拟Spring配置文件中的Bean标签
//其中方法的返回值相当于Bean标签的class
//其中方法的名字相当于Bean标签的id
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
3、开发一个消费者方法,去消费服务提供者提供的服务,这个消费者方法也是一个Controller:
/**
* SpringCloud的消费者端,消费就是一个普通的SpringBoot的web工程
* * 这里需要使用Http协议访问服务提供者
* */
@RestController
public class TestController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/test")
public Object test(){
//访问远程的SpringCloud的服务
//参数1 为服务器的地址以及服务器的请求名
//参数2 用于指定返回的数据类型是字符格式
//.getBody()方法的作用是获取响应的主体内容(服务端返回的具体JSON数据)
return restTemplate.getForEntity("http://localhost:8081/helloworld",String.class).getBody()+ " -----SpringCloud的消费者";
}
}
4、启动该SpringBoot程序,测试服务消费者调用服务提供者;
3.搭建与配置Eureka服务注册中心
1、 创建一个SpringBoot项目02-springcloud-eureka-server,并且添加SpringBoot的相关依赖;
2、 添加eureka的依赖:
<properties>
<java.version>1.8</java.version>
<!-- 配置SpringCloud版本为 Hoxton.SR11 对应当前的SpringBoot2.3.10 -->
<spring-cloud.version>Hoxton.SR11</spring-cloud.version>
</properties>
<!--Spring Cloud的eureka-server起步依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency
3、 添加Maven的依赖管理器
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
4、在application.properties文件中配置Eureka服务注册中心信息
#内嵌定时tomcat的端口
server.port=9100
#设置该服务注册中心的hostname
eureka.instance.hostname=localhost
#由于我们目前创建的应用是一个服务注册中心,而不是普通的应用,默认情况下,这个应用会向注册中心 (也是它自己)注册它自己,设置为false表示禁止这种自己向自己注册的默认行为
eureka.client.register-with-eureka=false
#表示不去检索其他的服务,因为服务注册中心本身的职责就是维护服务实例,它不需要去检索其他服务
eureka.client.fetch-registry=false
#指定服务注册中心的位置
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka
5、 在Spring Boot的入口类上添加一个@EnableEurekaServer注解,用于开启Eureka注册中心服务
端
4、启动与测试Eureka服务注册中心
1、完成上面的项目搭建后,我们就可以启动SpringBoot程序,main方法运行;
2、启动成功之后,通过在浏览器地址栏访问我们的注册中心;浏览器输入
http://localhost:9100 或 http://127.0.0.1:9100 测试Eureka是否启动
5.向Eureka服务注册中心注册服务
1、在该服务提供者中添加eureka的依赖,因为服务提供者向注册中心注册服务,需要连接eureka,所
以需要eureka客户端的支持;
<!--SpringCloud集成eureka客户端的起步依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、添加Maven的依赖管理器
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type> <scope>import</scope>
</dependency> </dependencies>
</dependencyManagement>
3、 修改服务提供者的application.properties文件,配置服务名称和注册中心地址
#指定服务名字 这个名称将在服务消费者时被调用,取值任意,建议使用服务名
spring.application.name= tigongzhe
#指定eureka的访问地址
eureka.client.service-url.defaultZone=http://localhost:9100/eureka
#指定Tomcat的端口号需要避免和其他的Tomcat端口冲突
server.port=8081
4、激活Eureka中的EnableEurekaClient功能:
在Spring Boot的入口函数处,通过添加@EnableEurekaClient注解来表明自己是一个eureka客户端,让我的服务消费者可以使用eureka注册中心
5、编写控制器提供服务
//自定义控制器类对外提供服务
@RestController
public class TestController {
@RequestMapping("/test")
public Object test() {
return "使用了eureka注册中心的服务提供者";
}
}
6、启动服务提供者SpringBoot程序的main方法运行;
7、启动运行之后,通过在浏览器地址栏访问我们之前搭建好的eureka注册中心,就可以看到有一个服
务已经注册成功了;