SpringCloud框架服务提供者

版权声明:技术交流群:758191639 作者支付宝18696232390喜欢的可以打钱! https://blog.csdn.net/u014131617/article/details/85990408

首先说明一下,为了便于讲解,本节之后,如无特殊说明,均是以单点的Eureka进
行讲解的。

服务提供者和服务消费者
在这里插入图片描述

服务提供者代码示例
这是一个稍微有点复杂的程序。我们使用spring-data-jpa操作h2数据库,同时将该
服务注册到注册中心Eureka中。

  • 创建一个Maven工程,并在pom.xml中添加如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht
tp://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://m
aven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>microservice-provider-user</artifactId>
<packaging>jar</packaging>
	<parent>
		<groupId>com.itmuch.cloud</groupId>
		<artifactId>spring-cloud-microservice-study</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
<dependencies>
<!-- 添加Eureka的依赖 -->
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-jpa</artifactId>
	</dependency>
	<dependency>
		<groupId>com.h2database</groupId>
		<artifactId>h2</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
</dependencies>
</project>
  • 配置文件:application.yml
server:
	port: 8000
spring:
	application:
		name: microservice-provider-user # 项目名称尽量用小写
jpa:
	generate-ddl: false
	show-sql: true
	hibernate:
		ddl-auto: none
	datasource: # 指定数据源
		platform: h2 # 指定数据源类型
		schema: classpath:schema.sql # 指定h2数据库的建表脚本
		data: classpath:data.sql # 指定h2数据库的insert脚本
logging:
	level:
		root: INFO
		org.hibernate: INFO
		org.hibernate.type.descriptor.sql.BasicBinder: TRACE
		org.hibernate.type.descriptor.sql.BasicExtractor: TRACE
		com.itmuch.youran.persistence: ERROR
eureka:
	client:
		serviceUrl:
			defaultZone: http://discovery:8761/eureka/ # 指定注册中心的地址
instance:
	preferIpAddress: true
  • 建表语句:schema.sql
drop table user if exists;
create table user (
	id bigint generated by default as identity, 
	username varchar(255), 
	age int, 
	primary key (id));
  • 插库语句:data.sql
insert into user (id, username, age) values (1,'Tom',12);
insert into user (id, username, age) values (2,'Jerry', 23);
insert into user (id, username, age) values (3,'Reno', 44);
insert into user (id, username, age) values (4,'Josh', 55);
  • DAO:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

-Controller:

/**
* 作用:
* ① 测试服务实例的相关内容
* ② 为后来的服务做提供
* @author eacdy
*/
@RestController
public class UserController {
	@Autowired
	private DiscoveryClient discoveryClient;
	@Autowired
	private UserRepository userRepository;
	/**
	* 注:@GetMapping("/{id}")是spring 4.3的新注解等价于:
	* @RequestMapping(value = "/id", method = RequestMethod.GET)
	* 类似的注解还有@PostMapping等等
	* @param id
	* @return user信息
	*/
	@GetMapping("/{id}")
	public User findById(@PathVariable Long id) {
		User findOne = this.userRepository.findOne(id);
		return findOne;
	}
	/**
	* 本地服务实例的信息
	* @return
	*/
	@GetMapping("/instance-info")
	public ServiceInstance showInfo() {
		ServiceInstance localServiceInstance = this.discoveryClient.
		getLocalServiceInstance();
		return localServiceInstance;
	}
}
  • 实体类:
@Entity
public class User {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	@Column
	private String username;
	@Column
	private Integer age;
	...
	// getters and setters
}
  • 编写Spring Boot启动程序,通过@EnableDiscoveryClient注解,即可将
    microservice-provider-user服务注册到Eureka上面去
@SpringBootApplication
@EnableDiscoveryClient
public class UserApplication {
public static void main(String[] args) {
	SpringApplication.run(UserApplication.class, args);
	}
}

测试
我们依次启动Eureka服务和microservice-provider-user服务。
访问:http://localhost:8761,如下图。我们会发现microservice-provider-user服务
已经被注册到了Eureka上面了。
在这里插入图片描述
访问:http://localhost:8000/instance-info,返回结果:

{
	"host": "192.168.0.59",
	"port": 8000,
	"metadata": {},
	"uri": "http://192.168.0.59:8000",
	"secure": false,
	"serviceId": "microservice-provider-user"
}

访问:http://discovery:8000/1,返回结果:

{
	"id": 1,
	"username": "Tom",
	"age": 12
}

服务注册到高可用Eureka

如果 Eureka 是高可用的,那么各个微服务配置只需要将 defaultZone 改为如
下即可:

eureka:
	client:
	  serviceUrl:
		defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka

猜你喜欢

转载自blog.csdn.net/u014131617/article/details/85990408