微服务架构简介(6)—Spring

栏目: Java · 发布时间: 7年前

微服务架构简介(6)—Spring 勿忘初心 2018-12-21 14:45

1.9 示例项目(信用风险评估引擎)

在本书中,我们会以一个信用风险引擎的项目作为示例。我们不会花过多篇幅讲解信用风险评估的算法。我们会以2~3个评估风险是否可控的规则作为例子。这个应用程序的重点不在于风险评估是如何完成的,而在于我们应该如何设计微服务,如何保证安全性,以及各个微服务之间如何通信,等等。在我们的例子中,会使用Spring Boot作为我们的开发环境,部署微服务会用到Docker。

1.10 Spring

Spring是一个非常令人称奇的框架。不管是曾经用过Spring还是现在正在用Spring的 Java 程序员都会领略到Spring的便捷。如果你用Java但是还没有了解过Spring,那么真的应该停下来反思一下了。Spring是一个基于POJO(简单Java对象)的轻量级框架。Spring最大的特点是其依赖注入方式,在Spring中创建bean和对象的职责交给了Spring框架来统一管理、完成和维护。Spring鼓励使用模块化的方式进行编程。

AOP(面向切面编程)和事务管理是很多项目都需要的,这些在Spring框架提供的库中都已经内置好了。

在架构层面,Spring由一个核心容器和很多个其他的模块来搭配满足各种各样的需求。Spring核心容器包含了以下模块:

Spring代码模块;

Spring bean模块;

Spring上下文;

Spring Expression Language(SpEL)。

基于上面的这些核心模块,Spring还提供了很多其他的模块,用于构建健壮的基于Java的应用程序,如数据库访问模块、事务管理模块、安全模块、Spring集成模块、批处理模块、消息模块、社交插件、Spring Cloud等。有很多组件可以让开发变得更加简单高效。单说Spring

框架的好处,就可以写上一整本书,但是这并不是本书的目的。概括来讲,Spring的这些组件对于帮助Java程序员高效开发大有帮助。但是Spring有一个小的瑕疵就是其较为复杂的配置系统。平均一个应用程序可能需要用到超过4个Spring模块(如核心容器、Spring MVC事务管理、数据库访问等必不可少的模块),随着项目的发展,用到的模块数会更多,此时各个不同版本的组件之间的配置管理和兼容性就变

得十分麻烦了。为了帮助开发人员解决这个问题,Spring Boot就面世了。

1.11 Spring Boot

Spring Boot比Spring更适合快速启动和易于开发,它省略了很多累赘的Spring配置。Spring Boot不是另外一个独立的开发框架,它只是在Spring的基础上做了一些组件的封装,以降低开发的工作量。Spring Boot为很多样板代码、XML配置和注解节省了开发的工作量。Spring Boot可以很容易地与其他Spring模块集成,而且还为We b应用提供了一个内置的HTTP Web服务器。Spring Boot还有命令行界面。Spring Boot可以使用多种构建工具,如Maven和Gradle等。

使用 Spring Boot,一切都变得很简单

下面我们举个例子来证实我们前面对Spring Boot的赞美。这里我们开发一个只包含一个控制器类的小应用,这个控制器类可以根据用户在

URL中发过来的名字信息,向用户提供问候功能。需要为这个例子准备下面这些环境:

Java 8;

STS(Spring Tools Suite);

Maven。

在STS中创建一个新的Maven工程,命名为FirstBoot,然后将项目中的pom.xml文件修改成下面这样:

<?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>
<groupId>com.sample</groupId>
<artifactId>firstboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- more dependency if required , like json converter -->
</project>

这里使用的spring-boot-starter-web依赖中封装了大量的其他依赖,包括Tomcat的We b服务器。在/src/main/java/com/sample/firstboot/controller目录下,创建一个名为SampleController.java的文件,这就是我们定义的控制器了,它将用来处理Tomcat接收到的HTTP请求。该文件的内容如下:

package com.sample.firstboot.controller;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@RestController
public class SampleController { 
 @RequestMapping("/greeting/{userName}")
String home(@PathVariable("userName") String userName) {
return "Welcome, "+userName +"!";
}
}

这就是一个简单的控制器类。这里的@RequestMapping注解用来标识方法可以处理的URL,这里这个方法能够处理的URL是/greeting/{username}。在接收到来自这个URL的请求时,控制器会返回Welcome加一个用户名。默认情况下处理的是HTTPGET方法。这是一个简单直接的控制器的例子。下一步,创建一个名为SampleApplication.java的文件,内容如下:

packagecom.sample.firstboot.controller;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.context.ApplicationContext;
@SpringBootApplication
public class SampleApplication {
public static void main(String[] args) {
ApplicationContextctx = SpringApplication.run(SampleApplication.class, args);
System.out.println("Application Ready to Start. Hit the browser.");
}
}

可以看到,这里使用的是一个@SpringBootApplication注解,而不是一大堆Spring框架下的注解组合,这里我们无须再添加诸如

@Configuration、@Component、@EnableAutoConfiguration之类的Spring注解。

接下来我们要运行这些代码,打开命令行窗口,然后进入应用程序所在的目录,然后敲入mvnspring-boot:run命令。这一命令会查找到包含

@SpringBootApplication注解的文件并运行这个应用程序。成功执行这个命令之后会有下面这样的日志输出在命令行中:Started

SampleApplicationin2.174secondsApplicationReadytoStart.

Hitthebrowser.

此时此刻,这个Spring Boot应用程序已经可以进行测试了。要测试这个应用程序,需要打开浏览器,然后敲入http://localhost:8080/greeting/john这个URL,这时应该能看到图1-4所示这样的页面。

微服务架构简介(6)—Spring

这里的localhost地址指向的是用户的计算机,8080是Spring Boot中Tomcat启动的默认端口。/greeting/john是我们在控制器中定义的

URL的一部分。这里john这个名字可以任意替换,如xyz等。由此可见,使用Spring Boot开发应用程序是非常简单的。使用Spring Boot之后,开发人员无须再去关心复杂的配置和依赖,只用把精力集中在业务逻辑开发上,从而可以极大提升开发效率。

1.12 小结

在本章中,我们学习了微服务的概念,了解了微服务架构的一些特征。读者应该清楚使用微服务架构的好处和一些需要权衡的地方。在下一章中,我们会以一个示例项目,也就是前面提到的风险评估系统为例,介绍微服务架构的具体内容。这个示例系统会贯穿在本书的每一章中。示例风险评估系统会使用Spring Boot作为开发框架,使用 Docker 来进行部署。这些技术在本章中都有所提及。接下来我们该干什么了呢?下一章我们会围绕这个风险评估系统,将阐述怎么定义微服务和服务的发现。而且,我们还会使用Spring Boot开发我们的第一个微服务—用户注册服务。

原文网址 :https://www.epubit.com/book/detail/27566

内容来源 :异步社区;版权属【人民邮电出版社 异步社区】所有,转载已获得授权;未经授权,不得以任何方式复制和传播本书内容,如需转载请联系异步社区。

分享至:
微服务架构简介(6)—Spring
微服务架构简介(6)—Spring

以上所述就是小编给大家介绍的《微服务架构简介(6)—Spring》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning XML with DOM and Ajax

Beginning XML with DOM and Ajax

Sas Jacobs / Apress / 2006-06-05 / USD 39.99

Don't waste time on 1,000-page tomes full of syntax; this book is all you need to get ahead in XML development. Renowned web developer Sas Jacobs presents an essential guide to XML. Beginning XML with......一起来看看 《Beginning XML with DOM and Ajax》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具