Skip to content

01. 实现用户服务(0.0.1)

zhengyangyong edited this page Jul 2, 2018 · 3 revisions

我们使用ServiceComb Java Chassis构建第一个微服务——用户服务,我们在项目下创建两个模块:

模块名 描述
common 项目通用模块,放置接口,DTO等
user-service 用户微服务

common模块

在common模块中,我们定义UserService接口:

public interface UserService {
  ResponseEntity<Boolean> logon(UserDTO user);
  ResponseEntity<Boolean> login(UserDTO user);
}

Logon用于新用户注册,Login用于用户登录验证,为了能够未来更好的扩展请求和响应的内容,我们使用DTO类包装参数。

user-service微服务

编写服务Endpoint

我们使用spring-boot-starter-provider开发微服务Endpoint,引入如下依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.servicecomb</groupId>
  <artifactId>spring-boot-starter-provider</artifactId>
</dependency>

在UserServiceImpl中实现UserService接口的所有方法。

用户信息持久化

我们需要持久化用户的信息,所以引入spring-boot-starter-data-jpa,使用MySQL数据库,引入MySQL驱动:

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

定义存储User信息的实体UserEntity:

@Entity
@Table(name = "T_User")
public class UserEntity {
  @Id
  private String name;

  private String password;

  public String getName() {
    return name;
  }

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

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public UserEntity() {
  }

  public UserEntity(String name, String password) {
    this.name = name;
    this.password = password;
  }
}

在CodeFist模式下,会在数据库中自动创建T_User表与此实体映射。

然后我们继承JPA的PagingAndSortingRepository来实现ORM操作:

@Repository
public interface UserRepository extends PagingAndSortingRepository<UserEntity, String> {
  UserEntity findByName(String name);
}

配置数据库连接

数据库的连接配置在application.properties中,包含了目标数据库,数据库用户名,数据库密码和JPA配置。

ServiceComb Java Chassis微服务配置

ServiceComb Java Chassis微服务的所有配置都在microservice.yaml中,主要包括ServiceCenter(服务注册&发现)地址,Rest Provider发布地址以及治理策略等。

相关资料

  1. Spring Boot中的JPA示例:

https://spring.io/guides/gs/accessing-data-jpa/

  1. 在Spring Boot中使用ServiceComb:

http://servicecomb.incubator.apache.org/cn/users/use-servicecomb-in-spring-boot/

  1. ServiceComb Java Chassis微服务配置:

http://servicecomb.incubator.apache.org/cn/users/service-definition/

http://servicecomb.incubator.apache.org/cn/users/service-configurations/

http://servicecomb.incubator.apache.org/cn/users/communicate-protocol/