开发者学堂课程【SpringBoot 快速掌握 - 高级应用:服务注册】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/613/detail/9320
服务注册
内容介绍
一、编写服务
二、将服务提供者注册至注册中心
三、启动服务提供者
一、编写服务
1.新建名为 service.TicketService 的类
首先新建一个类,名为 service.TicketService
service 要求提供一张电影票:
package com.atguigu.providerticket.service;
import org.springframework.stereotype.Service;
@Service
public class TicketService{
public String getTicket( )
//编写一个获取电影票的方法{
return“《厉害了,我的国》“;
}
}
2.新建一个 controller 类(为了方便访问)
为了方便访问,还需提供一个 controller,即新建一个 controller 类,名为controller.Ticketcontroller。
(1)通过 http 的方式将接口暴露
Springcloud 在整合微服务的时候,它是通过轻量级 HTTP 进行通信的,所以此时通过 http 的方式将接口暴露出来:
package com.atguigu.providerticket. controller;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Ticketcontroller {
public String getTicket( ){
}
}
(2)添加 TicketService
package com.atguigu.providerticket. controller;
import com.atguigu.providerticket.service.TicketService;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Ticketcontroller {
TicketService ticketService;
public String getTicket( ){
}
}
(3)添加 @Autowired
package com.atguigu.providerticket. controller;
import com.atguigu.providerticket.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Ticketcontroller {
@Autowired
TicketService ticketService;
public String getTicket( ){
}
}
(4)调用 ticketService
package com.atguigu.providerticket. controller;
import com.atguigu.providerticket.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Ticketcontroller {
@Autowired
TicketService ticketService;
public String getTicket( ){
ticketService.getTicket( );//在return
return ticketService.getTicket( );
}
}
package com.atguigu.providerticket. controller;
import com.atgui.providerticket.service.TickService;
importorg.springframework.web.bind.annotation.
RestController;
@RestController
public class Ticketcontroller{
(5)使用 get 方式的 ticket 请求
package com.atguigu.providerticket. controller;
import com.atguigu.providerticket.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Ticketcontroller {
@Autowired
TicketService ticketService;
@GetMapping(”/ticket”)
public String getTicket( ){
return ticketService.getTicket( );
}
}
二、将提供者注册至注册中心
1.新建 application.yml
在 resources 中新建 New File,文件名为 application.yml
server:
port: 8001//提供者的端口
spring:
application:
name:provider-ticket//提供者的名字
2.将 eureka-server 的 resources 中的代码复杂到 provider 中进行配置
找到注册中心的服务注册地址
在 eureka-server 的 resources 中将地址:
eureka:
instance:
hostname: eureka-server # eureka 实例的主机名
client:
register-with-eureka:false //不把自己注册到 eureka 上
fetch-registry: false //不从 eureka 上来获取服务的注册信息
service-url:
defaultZone:http://localhost:8761/eureka/
复制到 provider 中进行配置:
3.
(1)将在 eureka-server 的 resources 中进行删改
eureka:
instance:
hostname: eureka-server # eureka 实例的主机名
client:
service-url:
defaultZone:http://localhost:8761/eureka/
(2)添加 prefer-ip-address
server:
port: 8001
spring:
application:
name:provider-ticket
eureka:
instance:
prefer-ip-address:true //注册服务时使用ip地址
client:
service-url:
defaultZone:http://localhost:8761/eureka/
三、启动服务提供者
访问 localhost:8001/ticket 能正常运行并显示《厉害了,我的国》,到注册中心刷新后会发现有一个名为 PROVIDER-TICKET 的应用,其端口号为8001。
package com.atguigu.providerticket.service;
import org.springframework.stereotype.Service;
@Service
public class TicketService{
System.out.println(“8001”);
//为方便测试
public String getTicket( )
//编写一个获取电影票的方法{
return“《厉害了,我的国》“;
}
}
在 provider 的 package 中将其打包,将打包好的 jar 包放在桌面的新建文件夹中方便后续测试,将端口号改为8002继续重复上述操作。在此新建文件夹的位置运行 cmd 输入 java -jar provider-ticket-0.0.1-SNAPSHO-8001T.jar ,然后回车运行。同样,在此新建文件夹的位置运行 cmd 输入 java -jar provider-ticket-0.0.1-SNAPSHO-8002.jar ,然后回车运行应用。回到注册中心刷新,会发现8001,8002同一个应用的两个实例都在 Status 中。