SpringCloud初体验
Springcloud流应用程序启动器是基于SpringBoot的Spring集成应用程序,提供与外部系统的集成。一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。
一、服务的注册与发现-Nacos
解压即可使用。/bin/startup.cmd
启动完成访问Nacos主页http://localsot/8848/nacos/index.html
账号:nacso
密码:nacos
1.1 Nacos的作用
1.注册中心Nacos可以作为注册中心,实现服务的发现和注册,服务的管理
2.配置中心Nacos可以作为系统的统一配置中心,实现某些配置的统一管理,和动态发布
1.2 Nacos的快速入门(微服务初体验)
1.2.1 创建一个父工程SptingBoot项目,并且在父工程中指定SpringCloudRouting
1.2.2 创建Maven子项目Cloud_Provider
- 服务提供者
内层项目添加启动类和配置文件。启动类上添加注解(注册和发现服务)。
- 依赖jar包
<!--依赖nacos的jar 实现服务的注册和发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
- 创建启动类,添加注册服务注解
@EnableFeignClients
@SpringBootApplication
@EnableFeignClients //发现注册和服务
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
- 修改配置文件,配置Nacos的服务地址和服务名
server:
port: 8081
spring:
application:
name: HelloProvider #注册服务名
cloud:
nacos:
discovery:
server-addr: 10.8.154.84:8848 #Nacos的IP地址
- 实现要注册的服务,SpringBoot项目流程 Controller - Service - Dao - Mybatis - JDBC数据库
@RestController
@RequestMapping("/provider/user/")
public class UserController {
@Autowired
private UserService service;
@GetMapping("find.do")
public String find() {
return service.find();
}
}
1.2.3 创建Maven子项目Cloud_Customer
- 消费服务者
调用服务提供者接口,根据服务名找到注册中心 ,服务名对应的配置IP和端口,拼接上Service的接口,调用服务提供者。
- 依赖jar
<!--实现nacos的注册服务和发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<!--实现服务的调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
- 创建启动类Application,添加注解
@SpringBootApplication
@EnableDiscoveryClient //注册服务
@EnableFeignClients //启动服务的发现
public class CustomerApplication {
public static void main(String[] args) {
SpringApplication.run(CustomerApplication.class, args);
}
}
- 修改yml配置文件,配置Nacos的注册服务
如果多个接口调用同一个服务的提供者,需要额外添加配置文件
server:
port: 8082
spring:
application:
name: HelloCustomer
cloud:
nacos:
discovery:
server-addr: 10.8.154.84:8848
main:
allow-bean-definition-overriding: true #同一个服务可以被使用多次
- 创建调用服务接口Service
如何有参数的调用需要添加注解@RequestionParam,否则无法传递参数到提供者
Service接口
@FeignClient("HelloProvider") //找到服务名 ,得到ip和端口。拼接接口的路径找到实现者的接口进行请求
public interface UserService {
@GetMapping("/provider/user/find.do")
String find();
@GetMapping("/provider/user/findid.do")
List<String> findById(@RequestParam int a);
}
Controller控制层
@RestController
@RequestMapping("/api/user/")
public class UserController {
@Autowired
private UserService service;
@GetMapping("find.do")
public String find() {
return service.find();
}
@GetMapping("findid.do")
public List<String> finda(int a) {
return service.findById(a);
}
1.2.4 微服务启动
1.先保证注册中心启动
2.启动提供者
3.启动消费者
通过访问服务消费者localhost:8080/api/user/find.do 找到服务这的Service接口,在接口中根据注解@FeignClient("HelloProvider")
找到指定注册服务名,在注册服务中根据配置的IP和端口找到具体的服务提供者的请求URL路径,之后就会进行操作。