1、介绍服务提供者
1、什么是服务提供者
是指服务的被调用方(即:为其它服务提供服务的服务),服务提供者,作为一个Eureka Client,向Eureka Server做服务注册、续约和下线等操作,注册的主要数据包括服务名、机器ip、端口号、域名等等。
2.有哪些可以作为服务提供者
例如登录、注册、读写数据等等的一些可独立出来的为其他服务可提供服务的服务可以作为提供者来进行设计
3.设计服务提供者的好处
可以防止后续我们设计消费者的时候受到攻击,避免第一层攻击触及到核心业务,这样就可以更好的提高服务的安全性,稳定性
2、设计一个服务提供者
1、在项目上右击-new-创建Moudle
创建过程同第三篇创建Eureka
我将名字自定义为FirstProvider代表这是第一个服务提供者,那么这么定义就代表后续在设计的时候肯定会存在第二、第三服务提供者。另外名称后面的-A是代表这是第一个服务提供者集群中的第一号服务,当然目前我并没有创建集群,所以在后续创建集群的时候这样做能够更清晰且更加直观的展现出来。
2、确认目录是否正确
3、检查父pom依赖是否自动出现modules块
4、进入pom.xml配置依赖
<dependencies>
<!-- web项目 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- eureka client 客户端账号密码依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
5、在FirstProvider-A(module)-src-main-resources中创建application.yml(固定名称的配置文件)并配置以下配置
#自定义端口号
server:
port: 7000
#自定义服务注册名
spring:
application:
name: FIRST-PROVIDER
#设定一些注册进eureka的配置
eureka:
#设定实例
instance:
#设定续约响应时间,未设定默认30s
lease-renewal-interval-in-seconds: 30
#设定续约到期时间,未设定默认90s
lease-expiration-duration-in-seconds: 90
client:
service-url:
#将服务注册至eureka来进行管理
defaultZone: http://root:root@localhost:5010/eureka/
6、创建FirstProvider主启动类(注意:主启动类一定要在com.cloud.provider包的第一级下,如果com.cloud.provider创建任何文件,都要保持此Provider主启动类与它们同级,切勿不可在其他包下级,否则很容易出现启动出错,寻找问题很麻烦)
package com.cloud.provider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//SpringBoot核心注解,开启自动配置
@SpringBootApplication
public class ProviderStart {
public static void main(String[] args) {
SpringApplication.run(ProviderStart.class,args);
}
}
7、建立controller层
package com.cloud.provider.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
//@ResponseBogy和@Controller的组合注解
@RestController
//↓本人通过在类上配置每个类的独立的url映射
@RequestMapping("/firstProvider")
public class ProviderController {
//方式一
@RequestMapping(value = "/firstProviderA_one",method = RequestMethod.GET)
public String provider_A_one(){
return "this is first provider !";
}
//方式二
@GetMapping("/firstProviderA_two")
public String provider_A_two(){
return "this is first provider !";
}
}
8、启动
1.启动Eureka
2.启动Provider
3.在启动过程中出现
证明我们没有放行服务去Eureka进行注册
4.回到Eureka(module)-src-main-java-com.eureka.start 创建一个Java文件并配置放行
package com.eureka.start;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity
public class WebSec extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity httpSecurity) throws Exception{
//如果不配置则所有服务无法访问Eureka的服务
//允许路径中包含eureka及eureka/**的请求去访问Eureka服务
httpSecurity.csrf().ignoringAntMatchers("/eureka/**");
super.configure(httpSecurity);
}
}
重新启动Eureka和Provider
启动成功
9、进入浏览器访问两种方式对应的映射url
成功!
到目前为止,我们仅仅只是设计了一个服务提供者的雏形,但并没有给他设计响应的功能,那么下期开始我将详细介绍一些服务在提供者模块上是如何进行调用并且使用的。