-
Notifications
You must be signed in to change notification settings - Fork 20
01. 实现用户服务(0.0.1)
我们使用ServiceComb Java Chassis构建第一个微服务——用户服务,我们在项目下创建两个模块:
模块名 | 描述 |
---|---|
common | 项目通用模块,放置接口,DTO等 |
user-service | 用户微服务 |
在common模块中,我们定义UserService接口:
public interface UserService {
ResponseEntity<Boolean> logon(UserDTO user);
ResponseEntity<Boolean> login(UserDTO user);
}
Logon用于新用户注册,Login用于用户登录验证,为了能够未来更好的扩展请求和响应的内容,我们使用DTO类包装参数。
我们使用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微服务的所有配置都在microservice.yaml中,主要包括ServiceCenter(服务注册&发现)地址,Rest Provider发布地址以及治理策略等。
- Spring Boot中的JPA示例:
https://spring.io/guides/gs/accessing-data-jpa/
- 在Spring Boot中使用ServiceComb:
http://servicecomb.incubator.apache.org/cn/users/use-servicecomb-in-spring-boot/
- 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/