从零开始搭建spring cloud(二)创建服务提供者

 

服务提供者与消费者 使用微服务构建的是分布式系统,微服务直接通过网络进行通信,服务提供者与服务消费者来描述微服务直接的关系。

服务提供者:服务的被调用方(为其他服务提供服务的服务)

服务消费者:服务的调用方(依赖其他服务的服务)

本次提供一个用户微服务作为服务提供者,该服务可以通过主键查询用户信息。使用Spring Data JPA作为持久性框架,使用h2作为数据库。

1.在父项目上创建一个作为provider的 model,创建方式和第一篇文章同理。在父项目gradle文件夹中创建对应的.gradle文件管理独有的依赖。

project(':maoj-eureka-provider'){
    dependencies {
        compile('org.springframework.boot:spring-boot-starter-data-jpa')
        compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
        runtime('com.h2database:h2')
    }
}

2.按照第一篇文章的方式更改父项目的build.gradle和settings.gradle。引入新的模块依赖。

3.在项目的classpath下建立schema.sql,data.sql并添加如下内容:

//schema.sql
drop table user if exists;

create table user (id bigint generated by default as identity ,username varchar ,name varchar ,primary key (id));

//data.sql
insert into user(id, username, name) values (1,'account1','张三');
insert into user(id, username, name) values (2,'account2','李四');
insert into user(id, username, name) values (3,'account3','王五');

4.编写业务代码,添加用户实体,和查询接口

创建用户实体

@Entity
public class User implements Serializable {

    private static final long serialVersionUID = 3070319358435109259L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column
    private String username;

    @Column
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

创建用户repository

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}

创建用户resource

@RestController
public class UserResource {

    @Autowired
    private UserRepository userRepository;

    @GetMapping(path = "/users/{id}")
    public User getUser(@PathVariable Long id){
       return userRepository.findById(id).get();
    }
}

4.在启动类上添加@EnableDiscoveryClient主键,更改application.yml配置文件,将这个服务注册到eureka 注册中心

spring:
  application:
    name: maoj-eureka-provider ##用于指定注册到eureka server上的应用名称
  jpa:
    generate-ddl: false
    show-sql: true
    hibernate:
      ddl-auto: none
  datasource:
    platform: h2
    schema: classpath:schema.sql
    data: classpath:data.sql

eureka:
  client:
    server-url:
      default-zone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true ##表示将自己的ip注册到eureka server上

logging:
  level:
    root: INFO
    org.hibernate: INFO

server:
  port: 8000

启动eureka server项目和provider项目,访问localhost:8761可以看到服务已经注册到了注册中心,访问localhost:8000/users/1可以看到网页上打印的用户信息。

下一篇将编写一个微服务,来作为本服务的消费者,用来理解服务之间是如何进行通信的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值