springcloud微服务简单实例(服务发现与注册)
原理图:
一.架构
1.创建一个SPRINGCLOUD项目
2.添加依赖:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.17.RELEASE</version></parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
3.创建模块:
SPRINGCLOUD_EUREKASERVER (注册中心)
SPRINGCLOUD_USERSERVICE (微服务)
SPRINGCLOUD_USERUI (客户端)
二.模块代码
1.SPRINGCLOUD_EUREKASERVER模块
首先在pom.xml导入依赖:
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency>
</dependencies>
EurekaServer.java:
@SpringBootApplication
//开启Eureka Server
@EnableEurekaServer
public class EurekaServer {public static void main(String[] args) {new SpringApplicationBuilder(EurekaServer.class).web(true).run(args);}
}
解释:
@EnableEurekaServer注解:是启用eureka的服务
@SpringBootApplication注解:
主要有3个注解:
1.@ComponentScan:这个主要有2个作用,组件扫描和自动装配;
2.@SpringBootConfiguration:这个注解主要是继承@Configuration注解,这个我们就是为了加载配置文件用
3.@EnableAutoConfiguration:自动生成spring的配置文件
application.yml资源文件:
#指定端口,默认是8761,不要改变
server:port: 8761eureka:instance:#将来注册到注册中心的微服务包括注册中心都是用ip地址prefer-ip-address: truehostname: localhostclient:#是否注册到注册中心 (注册中心自己不需要注册)register-with-eureka: false#是否抓取注册中的注册信息fetch-registry: false#微服务和客户端用来注册和发现的地址service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
运行main方法,再进入浏览器查询:http://localhost:8761/
2.SPRINGCLOUD_USERSERVICE模块
首先在pom.xml导入依赖:
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version><scope>provided</scope></dependency></dependencies>
UserService.java:
@SpringBootApplication
// 启用eureka的客户端
@EnableEurekaClient
public class UserService {public static void main(String[] args) {new SpringApplicationBuilder(UserService.class).web(true).run(args);}}
application.yml资源文件:
server:port: 8881#给微服务设置一个名字
spring:application:name: userservice
#连接数据库datasource:url: jdbc:mysql://localhost/mysqlusername: rootpassword: ps123456driver-class-name: com.mysql.jdbc.Drivereureka:instance:prefer-ip-address: truehostname: localhostclient:register-with-eureka: truefetch-registry: falseservice-url:defaultZone: http://localhost:8761/eureka/
mapper包下的 UserMapper.java:
// 根据账户和密码查询mysql数据库中user表的信息
@Mapper
public interface UserMapper {@Select("select * from user where user=#{userName} and authentication_string=password(#{password})")public List<User> queryUser(@Param("userName") String userName, @Param("password")String password);
}
entity包下的User.java实体类:
@Data
@NoArgsConstructor
public class User {private String userName;private String password;
}
解释:
1.@Data注解:生成属性的set,get方法
2.@NoArgsConstructor注解:生成构造方法
entity包下的Result.java 实体类:
// 要返回的实体类
@Data
@NoArgsConstructor
public class Result {private int code;private String msg;private List data;
}
controller包下的UserController.java:
@RestController
public class UserController {@AutowiredUserMapper usermapper;@PostMapping("/validateUser")public Result validateUser(@RequestBody User user){List<User> maps = usermapper.queryUser(user.getUserName(), user.getPassword());// 将获得的数据经过逻辑验证返回给界面微服务的控制层Result re = new Result();if(maps.size()>0){re.setCode(1);re.setMsg("请输入正确的用户名和密码");}return re;}
}
解释:
1.@RestController的作用就相当于@Controller+@ResponseBody的结合体
--@Controller:扫描控制层
--@ResponseBody:表示返回的类型是个JSON数据
2.@RestController: 接收客户端传来的数据
3.SPRINGCLOUD_USERUI模块
首先在pom.xml导入依赖:
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version><scope>provided</scope></dependency>
</dependencies>
application.yml资源文件:
#界面一般是80端口
server:port: 80#给登录微服务设置一个名字
spring:application:name: useruieureka:instance:prefer-ip-address: truehostname: localhostclient:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://localhost:8761/eureka/
com.ps包下的UserUi.java:
@SpringBootApplication
// 启用eureka的客户端
@EnableEurekaClient
public class UserUi {@Bean// 支持负载均衡功能@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}public static void main(String[] args) {new SpringApplicationBuilder(UserUi.class).web(true).run(args);}}
entity包下的User.java:
@Data
@NoArgsConstructor
public class User {private String userName;private String password;}
Result.java:
@Data
@NoArgsConstructor
public class Result {private int code;private String msg;private List data;
}
controller包下的UserController.java:
@Controller
public class UserController {@AutowiredRestTemplate restTemplate;@PostMapping("/rlogin")public String rlogin(User user){// 需要调用userservice这个微服务,注册中心里面服务名是大写// validateUser:指要转跳的微服务的控制层的路径String url = "http://USERSERVICE/validateUser";// user:将user获取的数据传到微服务// Result.class:指微服务返回的类型ResponseEntity<Result> objectResponseEntity = restTemplate.postForEntity(url,user ,Result.class);Result body = objectResponseEntity.getBody();// 当重微服务得到的Result对象的数据中code属性是1时表示,登录成功if(body.getCode()==1){return "redirect:/suc.html";}else{return "redirect:/login.html";}}
}
解释:@Controller:指定返回的html界面,必须是重定向转跳
login.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><!--这里是登录界面--><form method="post" action="rlogin"><label>用户名</label><input name="userName"/><br><label>密 码</label><input name="password"/><br><input type="submit" value="登录"/></form>
</body>
</html>
suc.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><!--登录成功展示-->登录成功
</body>
</html>
三.效果展示
1.依次运行SPRINGCLOUD_EUREKASERVER(注册中心),SPRINGCLOUD_USERSERVICE(微服务),SPRINGCLOUD_USERUI(客户端)
2.去注册中心查看微服务:http://localhost:8761/
浏览登录界面:
输入账户和密码登录后:
springcloud微服务简单实例(服务发现与注册)相关推荐
- springboot整合kafka和netty服务简单实例
文章目录 背景 实体 编写KafkaSender,用于操作kafka 编写netty服务端 netty 服务启动类: NettyServerHandler处理类 Controller 背景 步骤: p ...
- 使用CXF发布WebService服务简单实例
一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...
- Windows服务简单实例
1.定时器使用 partial class TimerService : ServiceBase{public TimerService(){InitializeComponent();}Timer ...
- webservice实例java_Java WebService(实战) 简单实例
一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1.创建[Web Service Project],命名为[TheService ...
- springcloud微服务系列之服务注册与发现组件Eureka
一.Eurake的简介 二.使用Eureka进行服务的注册消费 1.创建一个服务注册中心 2.创建服务的提供者 3.创建服务的消费者 总结 一.Eurake的简介 今天我们来介绍下springclou ...
- SpringCloud微服务-服务注册发现-负载均衡-服务调用-服务降级-服务网关-配置中心-消息总线-消息驱动-链路追踪-alibaba-nacos-sentinel-seata理论原理分析
SpringCloud理论技术 概述 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总 ...
- SpringCloud微服务:Eureka组件之服务注册与发现
一.Eureka基本架构 1.Eureka角色结构图 角色职责如下: 1).Register:服务注册中心,它是一个Eureka Server ,提供服务注册和发现功能. 2).Provider:服务 ...
- SpringCloud微服务完整实例
转自:https://blog.csdn.net/ittechnologyhome/article/details/73824784,侵删 一微服务架构概述 1.1 微服务特性以及优点 每个服务可以独 ...
- 第一篇:SpringCloud 构建微服务系统之服务注册和发现(consul)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/85260629 今天我们要学习的是consul ...
最新文章
- linux下的临时文件在哪,linux – 如何找出创建临时文件的内容
- 上验证cudnn是否安装成功_windows和linux上的tensorflow安装(极简安装方法)
- 在C++中子类继承和调用父类的构造函数方法
- python的常量和变量_python变量和常量
- T-SQL Enhancement in SQL Server 2005[下篇]
- JUnit测试用例– Eclipse和Maven
- 极光短信验证码JAVA_Android如何集成极光短信验证
- 致远OA_0day批量植Cknife马一步到位
- 计算机综合布线基本知识,综合布线的基本常识
- 情侣间的计算机游戏,适合情侣玩的双人单机游戏
- 中了勒索病毒如何自救?20220105
- 苹果电脑如何正确断网?Mac电脑断网方法
- 电商产品之订单拆分规则与流程
- thinkphp 分页样式
- 1153: 简易版最长序列
- 云网融合驱动数据中心技术聚变
- 嵌入式蓝桥杯G431RBT6 串口配置及使用方法cube MX
- Calander用例
- 【SQL Server】 类型转换TRY_PARSE(字符转日期)
- 测试开发工作者日记:(楚汉传奇-it职场)2020.6.24-6.27
热门文章
- 热点故事“百度C2C是“社会化商务”的重大利好”
- 【MySQL】mysql | 解决navicat连接mysql报错1129
- iOS View添加四周阴影
- 分享 | 借“铁死亡”之鉴,行“铜死亡”之师
- 市面上降噪最好的蓝牙耳机,618必备降噪蓝牙耳机推荐
- “灵巧小工具”一个将图片处理成打印纸尺寸的丰富功能完全免费无水印的图片处理工具
- 英语音标学习_B站周育如老师
- 模板方法模式和策略模式的应用场景浅析
- Macbook Pro 201 装Win10 声卡_苹果电脑真那么耐用吗?我拿五年前的Mac试了试-苹果,MacBook ——快科技(驱动之家旗下媒体)-...
- go语言实现消息队列模型