转载

译见 | 构建用户管理微服务(终章):合而为一

译见 | 构建用户管理微服务(终章):合而为一

《译见》系列“构建用户管理微服务”已经向大家连载了六期,我们从零起步已经成功开发出用户管理应用程序的构建模块。在最后一部分,将向大家展示如何将之前的所学合而为一,来让应用程序正常地运行下去。

译见 | 构建用户管理微服务(终章):合而为一

创建一个独立的可执行模块

毫无疑问的,建立 Spring-based 应用程序最简单的方法便是使用 Spring Boot。因为使用它比在原生 Spring 使用起来更加有效, 所以它被大量的采用 。我曾在各种情况下使用 Spring , 并在 servlet 容器和完全成熟的 Java EE 应用程序服务器上构建应用程序, 但能够将所有内容打包在可执行捆绑包中能极大地降低开发成本。

总而言之,第一步是为应用程序创建一个新的模块,即为   springuni-auth-boot

Maven 配置

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
  <modelVersion>4.0.0</modelVersion>
 
  <parent>
    <artifactId>springuni-particles</artifactId>
    <groupId>com.springuni</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
 
  <artifactId>springuni-auth-boot</artifactId>
 
  <name>SpringUni Auth User Boot</name>
  <description>Example module for assembling user authentication modules</description>
 
  <dependencies>
    <dependency>
      <groupId>com.springuni</groupId>
      <artifactId>springuni-auth-rest</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
 
    <dependency>
      <groupId>com.springuni</groupId>
      <artifactId>springuni-auth-user-jpa</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
 
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
 
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
 
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
  </dependencies>
 
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <!-- https://github.com/spring-projects/spring-boot/issues/6254#issuecomment-229600830 -->
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </plugin>
    </plugins>
  </build></project>

Springuni-auth-rest 提供用于用户管理的 REST 端点,它还将  s pringuni-auth-model  作为传递依赖。 springuni-auth-user-jpa 负责持久化用户数据,并在之后将替换其他持久性机制。

第三个依赖是 MySQL 连接器,且它可以根据需求进行替换。

Spring Boot 的角度来说,一下两个依赖关系是非常重要的: spring-boot-starter-web 和  spring-boot-starter-tomcat   。我们需要用它们来创建 Web 应用程序。

应用程序的接入口

import com.springuni.auth.domain.model.AuthJpaRepositoryConfiguration;import com.springuni.auth.domain.service.AuthServiceConfiguration;import com.springuni.auth.rest.AuthRestConfiguration;import com.springuni.auth.security.AuthSecurityConfiguration;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;
 
@SpringBootApplication
@Configuration
@Import({
    AuthJpaRepositoryConfiguration.class,
    AuthServiceConfiguration.class,
    AuthRestConfiguration.class,
    AuthSecurityConfiguration.class})public class Application {  public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
  }
 
}

在没有 Spring Boot 的情况下执行一下步骤会非常吃力(必须在web.xml中注册上下文监听器且为应用程序设置容器)

这几乎是一个虚拟模块且所有重要的举措都将归结为必须导入一些 Java-based Spring 配置类。

启动

Spring Boot 附带了一个非常有用的 Maven 插件,它可以将整个项目重新打包成一个可以进行执行的 über JAR。它同样也可以在本地启动项目。

mvn -pl springuni-auth-boot spring-boot:run

测试驱动用户管理应用程序

第一部分定义了所有可用的 REST 端点,现在用一些用例来对他们进行测试。

注册新用户

curl -H 'Content-Type: application/json' -XPOST http://localhost:5000/users -d /
'{
 "screenName":"test2",
 "contactData": {
   "email": "test2@springuni.com"
 },
 "password": "test"
}'
HTTP/1.1 200

首次登陆尝试

此时进行首次登陆尝试会失败,因为未确认用户账号。

curl -D- -XPOST http://localhost:5000/auth/login -d '{ "username":"test5", "password": "test" }' 
HTTP/1.1 401 
{
 "statusCode" : 401,
 "reasonPhrase" : "Unauthorized"
}

确认账号

一般情况下,用户最终会收到一封附带确认链接的电子电子邮件,点击链接会启动如下的请求。

curl -D- -XPUT http://localhost:5000/users/620366184447377/77fc990b-210c-4132-ac93-ec50522ba06f
HTTP/1.1 200

第二次登陆尝试

用户的电子邮箱地址确认后,即可登录。

curl -D- -XPOST http://localhost:5000/auth/login -d '{ "username":"test5", "password": "test" }'
HTTP/1.1 200
X-Set-Authorization-Bearer: eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI2MjA1OTkwNjIwMTQ4ODEiLCJzdWIiOiI2MjAzNjYxODQ0NDczNzciLCJleHAiOjE0OTcxMDQ3OTAsImlhdCI6MTQ5NzAxODM5MCwiYXV0aG9yaXRpZXMiOiIifQ.U-GfabsdYidg-Y9eSp2lyyh7DxxaI-zaTOZISlCf3RjKQUTmu0-vm6DH80xYWE69SmoGgm07qiYM32JBd9d5oQ

下一步是什么?

正如我之前提到的,这个应用程序有很多工作要做。其中还有一些基本功能,也没有UI。您可以按照以下步骤进行: https://github.com/springuni/springuni-particles/projects/1

原文链接: https://www.springuni.com/user-management-microservice-part-7/

原文  http://blog.daocloud.io/edu170817/
正文到此结束
Loading...