前面已经搭建好eureka注册中心了,这次搭建eureka服务提供者,提供自身实例服务供其他eureka客户端调用。笔者数据库选用的是h2,原因是无需搭建数据库,方便快捷。
1.新建eureka-producer模块,pom文件如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.feng</groupId>
<artifactId>cloud-study</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>eureka-producer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-producer</name>
<description>cloud study for two month</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.application.yml文件配置
spring:
application:
name: eureka-producer
jpa:
showSql: true
generateDdl: false
hibernate:
ddlAuto: none
datasource:
platform: h2
schema: classpath:schmea.sql
data: classpath:data.sql
server:
port: 8802
servlet:
context-path: /producer
eureka:
instance:
instanceId: ${spring.application.name}:${vcap.application.instance-id:${spring.application.instance-id:${random.value}}} #获取要在eureka注册的此实例的唯一ID(在appName范围内)
hostname: localhost #主机名(如果可以在配置时确定的话)
client:
enabled: true #是否开启eureka客户端标识
registerWithEureka: true #注册本身实例到eureka,默认true
fetchRegistry: true #拉取eureka其他注册实例到本地,默认true
serviceUrl: #可用区映射到与eureka服务器通信的标准URL列表。每个值可以是单个URL,也可以是逗号分隔的*位置列表。通常,eureka服务器URL带有协议,主机,端口,上下文和版本信息(如果有)。示例: https://ec2-256-156-243-129.compute-1.amazonaws.com:7001/eureka/ 更改在下一个服务URL刷新周期(由eurekaServiceUrlPollIntervalSeconds指定)下在运行时有效
defaultZone: http://localhost:8801/register/eureka/ #默认defaultZone:http://localhost:8761/eureka/
3.编辑schmea.sql和data.sql,schmea.sql是建表语句,data.sql是添加数据语句
schmea.sql
create table MOVIE(
uuid varchar (32) not null COMMENT '主键',
name varchar (32) DEFAULT null COMMENT '电影名',
price varchar (11) DEFAULT null COMMENT '价格',
time varchar (20) DEFAULT null COMMENT '放映时间',
primary key(uuid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
data.sql
insert into MOVIE (uuid,name,price,time) values ('1','哪吒传奇','35.9','20190929');
insert into MOVIE (uuid,name,price,time) values ('2','阿甘正传','25','20191029');
insert into MOVIE (uuid,name,price,time) values ('3','海上钢琴师','48','20190827');
insert into MOVIE (uuid,name,price,time) values ('4','战狼','55','20191120');
4.搭建dao层和POJO
package com.feng.cloud.study.mapper;
import com.feng.cloud.study.entity.MovieVo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @author: fengyantao
* @date: 2019/9/26 下午9:48
* @version: V1.0
* @review: fengyantao/2019/9/26 下午9:48
*/
public interface MovieRepository extends JpaRepository<MovieVo, String> {
List<MovieVo> findAll();
}
package com.feng.cloud.study.entity;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.io.Serializable;
/**
* @author: fengyantao
* @date: 2019/9/26 下午9:49
* @version: V1.0
* @review: fengyantao/2019/9/26 下午9:49
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@Entity(name = "movie")
public class MovieVo implements Serializable {
private static final long serialVersionUID = -6799861275124457101L;
@Id
private String uuid;
private String name;
private String price;
private String time;
}
5.编写controller,测试效果如何
package com.feng.cloud.study.controller;
import com.alibaba.fastjson.JSONObject;
import com.feng.cloud.study.entity.MovieVo;
import com.feng.cloud.study.mapper.MovieRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author: fengyantao
* @date: 2019/11/6 下午3:22
* @version: V1.0
* @review: fengyantao/2019/11/6 下午3:22
*/
@RestController
@RequestMapping("/movie")
public class MovieController {
@Autowired
private MovieRepository movieRepository;
@GetMapping("/getAllMovies")
public String getAllMovies() {
List<MovieVo> voList = movieRepository.findAll();
return JSONObject.toJSONString(voList);
}
@GetMapping("/test")
public String testMovie() {
return "SUCCESS";
}
}
6.启动项目,访问http://localhost:8801/register/,可以看到eureka-producer已经注册成功了
到此为止,eureka服务提供者eureka-producer已经搭建完成了,代码git地址:https://github.com/fengyantao/cloud-study/tree/master
大家如果有疑问,欢迎下方留言沟通!