标签:ssl isp hash rem ram ret utf8 conf over
它提供了多种访问远程http服务的方法,是一种简单便捷的访问restful服务模板类,是spring提供的用于访问Rest服务的客户端模板工具集。
这里使用maven和mybatis进行模块的搭建,步骤如下。
1)创建一个maven工程名为cloud-eureka-demo,删除src目录
2)在pom中导入依赖
<!--统一管理jar包版本--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <junit.version>4.12</junit.version> <lombok.version>1.16.18</lombok.version> <log4j.version>1.2.17</log4j.version> <mysql.version>5.1.47</mysql.version> <druid.version>1.1.16</druid.version> <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version> </properties> <!-- 依赖管理,父工程锁定版本--> <dependencyManagement> <dependencies> <!--spring boot 2.2.2--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <!--spring cloud Hoxton.SR1--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <!--spring cloud alibaba 2.1.0--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.spring.boot.version}</version> </dependency> <!--junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <!--log4j--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> </dependencies> </dependencyManagement>
公共服务模块用于存放公用的东西,如实体类等。
1)创建maven的工程名为eureka-demo-api,在pom中导入依赖
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
2)创建包com.zys.cloud.entity,在包下创建实体类User,内容如下
package com.zys.cloud.entity; import lombok.*; @Getter @Setter @ToString public class User { private Long id; private String name; private String phone; }
1)创建maven的工程名为eureka-demo-provider,在pom中导入依赖
<dependencies> <!--web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--引入自己定义的模块--> <dependency> <groupId>com.zys.springcloud</groupId> <artifactId>eureka-demo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <!--mysql-connector-java--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!--eureka-client--> </dependencies>
2)创建包com.zys.cloud,在包下新建启动类ProviderMain8001
package com.zys.cloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ProviderMain8001 { public static void main(String[] args) { SpringApplication.run(ProviderMain8001.class, args); } }
3)在com.zys.cloud包下在创建controller包,存放UserController
package com.zys.cloud.controller; import com.zys.cloud.entity.User; import com.zys.cloud.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/get/{id}") public User getUser(@PathVariable("id")long id){ return userService.getUser(id); } @PostMapping("/add") public Map<String,Object> addUser(User user){ System.out.println(user); Map<String,Object> map=new HashMap<>(); if(userService.addUser(user)!=0){ map.put("msg","添加成功"); map.put("code",200); }else{ map.put("msg","添加失败"); map.put("code",444); } return map; } }
4)在com.zys.cloud包下在创建service包,存放UserService
package com.zys.cloud.service; import com.zys.cloud.entity.User; public interface UserService { public User getUser(long id); int addUser(User user); }
5)在com.zys.cloud.service包下在创建impl包,存放UserServiceImpl
package com.zys.cloud.service.impl; import com.zys.cloud.dao.UserDao; import com.zys.cloud.entity.User; import com.zys.cloud.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public User getUser(long id) { return userDao.getById(id); } @Override public int addUser(User user) { return userDao.create(user); } }
6)在com.zys.cloud包下在创建dao包,存放UserDao
package com.zys.cloud.dao; import com.zys.cloud.entity.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface UserDao { int create(User user); User getById(@Param("id") Long id); }
7)在资源目录下新建mapper文件夹,然后再创建UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zys.cloud.dao.UserDao"> <insert id="create" parameterType="User" > insert into user values(null,#{name},#{phone}) </insert> <resultMap id="BaseResultMap" type="com.zys.cloud.entity.User"> <id column="id" property="id" jdbcType="BIGINT"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="phone" property="phone" jdbcType="VARCHAR"/> </resultMap> <select id="getById" parameterType="Long" resultMap="BaseResultMap"> select * from user where id=#{id}; </select> </mapper>
8)在资源目录下创建配置文件application.yml
server: port: 8001 spring: application: name: cloud-eureka-demo-provider datasource: type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型 driver-class-name: org.gjt.mm.mysql.Driver #mysql驱动包 url: jdbc:mysql://localhost:3306/db2020?useUnicode=true&characterEncoding-utr-8&useSSL=false username: root password: 123456 mybatis: mapper-locations: classpath:mapper/*.xml #所有Entity别名类所在包 type-aliases-package: com.zys.cloud.entity
9)创建mysql的数据库和表
create database db2021; create table user ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘id‘, name varchar(200) DEFAULT ‘‘, phone varchar(200) DEFAULT ‘‘, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; insert into user values(null,‘李明‘,‘12345600‘); insert into user values(null,‘赵慧‘,‘12345602‘); insert into user values(null,‘李凯‘,‘12345601‘);
10)运行测试
启动主启动类,使用postman工具输入http://127.0.0.1:8001/user/get/2使用get方式测试,再输入http://127.0.0.1:8001/user/add?name=哈哈哈&phone=123使用post方式测试。
1)创建maven的工程名为eureka-demo-consumer,在pom中导入依赖
<dependencies>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--引入自己定义的模块-->
<dependency>
<groupId>com.zys.springcloud</groupId>
<artifactId>eureka-demo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
2)创建包com.zys.cloud,在包下新建启动类ConsumerMain80
package com.zys.cloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ConsumerMain80 { public static void main(String[] args) { SpringApplication.run(ConsumerMain80.class, args); } }
3)在com.zys.cloud包下在创建config包,存放配置类
package com.zys.cloud.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; //相当于spring中的applicationContext.xml @Configuration public class ConfigBean { @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
4)在com.zys.cloud包下在创建controller包,存放UserController
package com.zys.cloud.controller; import com.zys.cloud.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import java.util.Map; @RestController @RequestMapping("/consumer") public class UserController { private final String BASE_URL="http://127.0.0.1:8001"; @Autowired private RestTemplate restTemplate; @GetMapping("/get/{id}") public User getUser(@PathVariable("id") long id){ return restTemplate.getForObject(BASE_URL+"/user/get/"+id,User.class); } @PostMapping("/add") public Map<String,Object> addUser(User user){ return restTemplate.postForObject(BASE_URL+"/user/add",user,Map.class); } }
5)在资源目录下创建配置文件application.yml
server: port: 80
6)修改eureka-demo-provider的UserController类中addUser方法,给User参数添加@RequestBody注解
7)运行测试
启动主启动类,使用postman工具输入http://127.0.0.1/consumer/get/1使用get方式测试,再输入http://127.0.0.1/consumer/add?name=嘻嘻嘻&phone=1255使用post方式测试。
它是一个基于REST的服务,用于定位服务,以实现云端中间层发现和故障转移。简单来说就是服务注册与发现,只要使用服务的标识就可以访问到服务,类似于Dubbo的注册中心Zookeeper。
它采用cs架构,Eureka Server作为服务注册的服务器,是注册中心;Eureka Client是客户端,需要注册的服务使用客户端连接到服务器并维持心跳。可以通过服务器来监测各个微服务是否正常运行。
有了1.2的例子,这里就在这个基础上进行后续的操作。
所谓服务中心,也就是Eureka Server。服务中心需要在启动类上添加注解@EnableEurekaServer表示这是一个Eureka的服务中心
1)创建maven的工程名为eureka-demo-server7001,在pom中导入依赖
<dependencies>
<!--eureka server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--boot web actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--引入自己定义的模块-->
<dependency>
<groupId>com.zys.springcloud</groupId>
<artifactId>eureka-demo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
2)创建包com.zys.cloud,在包下新建启动类EurekaMain7001
package com.zys.cloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaMain7001 { public static void main(String[] args) { SpringApplication.run(EurekaMain7001.class, args); } }
3)在资源目录下创建配置文件application.yml
server: port: 7001 eureka: instance: #eureka服务端的实例名称 hostname: localhost client: #false表示不向注册中心注册自己 register-with-eureka: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 fetch-registry: false service-url: #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
4)运行测试
启动主启动类,在浏览器输入http://127.0.0.1:7001测试server是否搭建成功,看到下图说明已搭建成功。
1)在eureka-demo-provider的pom中添加eureka客户端的依赖
<!--eureka-client--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2)在eureka-demo-provider的yml文件中添加eureka客户端的配置
#把客户端注册到服务列表中 eureka: client: #表示是否将自己注册进EurekaServer默认为true register-with-eureka: true #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡 fetch-registry: true service-url: defaultZone: http://localhost:7001/eureka
3)在eureka-demo-provider的启动类上添加eureka客户端的注解@EnableEurekaClient
@SpringBootApplication @EnableEurekaClient public class ProviderMain8001 { public static void main(String[] args) { SpringApplication.run(ProviderMain8001.class, args); } }
4)运行测试
标签:ssl isp hash rem ram ret utf8 conf over
原文地址:https://www.cnblogs.com/zys2019/p/12636241.html