Java微服务框架一览

news/发布时间2024/5/16 20:03:02

Java微服务框架一览

微服务在开发领域的应用越来越广泛,因为开发人员致力于创建更大、更复杂的应用程序,而这些应用程序作为微小服务的组合能够更好地得以开发和管理。这些微小的服务可以组合在一起工作,并实现更大、应用更广泛的功能。现在出现了很多的工具来满足使用逐段法而不是一次性地设计和构建应用程序的所有需求。今天,我们来看一下什么是微服务、使用微服务的好处,以及几个代码示例。

微服务是什么?

微服务是一种面向服务的架构风格(Java开发人员最重要的技能之一),其中,应用程序被构建为多个不同的小型服务的集合而不是单个应用程序。与单个程序不同的是,微服务让你可以同时运行多个独立的应用程序,而这些独立的应用程序可以使用不同的编码或编程语言来创建。庞大而又复杂的应用程序可以由多个可自行执行的简单而又独立的程序所组成。这些较小的程序组合在一起,可以提供庞大的单程序所具备的所有功能。

微服务捕获了你的业务场景,回答了“你想要试着解决什么问题”这个问题。微服务的开发团队的成员数量比较少,而且可以用任何语言、任何框架进行开发。每个相关的程序都是独立地版本化、执行和扩展。这些微服务可以与其他微服务进行交互,并且具有唯一的URL或名字,同时,即使遇到故障,也能始终保持可用性和一致性。

微服务能带来哪些好处?

使用微服务能带来多个好处,其中有一个好处是,由于这些较小的应用程序无需使用相同的编程语言,因此,开发人员可以使用他们最熟悉的语言。这有助于开发人员用更低的成本和更少的错误来开发程序。灵活性和低成本这两个特点也表现在可以将这些较小的程序重用在其他项目中,从而使其更有效率。

几个Java微服务框架的例子

这里有几个可用于Java开发的微服务框架:

  • Spring Boot:这可能是最好的Java微服务框架了,它适用于控制反转、面向切面编程等等。
  • Jersey:这个开源框架支持Java的JAX-RS API,使用起来非常容易。
  • Swagger:在为你提供开发门户网页的同时,能帮助你生成API文档,以允许用户测试你的API。

你也可以考虑使用其他一些框架,包括:Dropwizard、Ninja Web框架、Play框架、RestExpress、Restlet、Restx和Spark Framework。

如何使用DropWizard来创建微服务

DropWizard将成熟稳定的Java库集成在一个轻量级的包中,你可以在自己的应用程序中使用这个包。它使用了Jetty for HTTP、Jersey for REST和Jackson for JSON,以及Metrics、Guava、Logback、Hibernate Validator、Apache HttpClient、Liquibase、Mustache、Joda Time和Freemarker。

你可以使用Maven来设置Dropwizard应用程序。怎么做呢?

在你的POM文件中,添加一个dropwizard.version属性,值为DropWizard的最新版本。

<properties><dropwizard.version>LATEST VERSION</dropwizard.version>
</properties>
<!--Then list the dropwizard-core library:-->
<dependencies><dependency><groupId>io.dropwizard</groupId><artifactId>dropwizard-core</artifactId><version>${version}</version></dependency>
</dependencies>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这将为你设置一个Maven项目。在这里,你可以创建配置类、应用程序类、表现类,资源类或一个健康检查,还可以构建Fat JARS,然后运行应用程序。

在此链接中可以查看Dropwizard用户手册,这个链接是GitHub库。

示例代码:

package com.example.helloworld;
import com.yammer.dropwizard.config.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public class HelloWorldConfiguration extends Configuration {@NotEmpty@JsonPropertyprivate String template;@NotEmpty@JsonPropertyprivate String defaultName = "Stranger";public String getTemplate() {return template;}public String getDefaultName() {return defaultName;}
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Spring Boot微服务

Spring Boot让你可以通过嵌入式服务器将它提供的Java应用程序与你自己的应用程序一起使用。它使用了Tomcat,因此你不必使用其他的Java EE容器。Spring Boot的教程示例可以访问这里。

你可以在这里找到所有的Spring Boot工程,你会发现Spring Boot拥有你的应用程序所需的所有基础架构。无论你是在编写安全类、配置类或是大数据类的应用程序,总能找到对应的Spring Boot工程。

Spring Boot的工程包括:
- Spring IO Platform:用于版本化应用程序的企业级分发。
- Spring Framework:用于事务管理、依赖注入、数据访问、消息传递和Web应用程序。
- Spring Cloud:用于分布式系统,用于构建或部署你的微服务。
- Spring Data:用于与数据访问相关的微服务,不管是映射还是归约,关系型还是非关系型。
- Spring Batch:用于高级别的批量操作。
- Spring Security:用于授权和认证支持。
- Spring REST文档:用于RESTful服务文档化。
- Spring Social:用于连接社交媒体API。
- Spring Mobile:适用于移动网络应用。

示例代码:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {@RequestMapping("/")String home() {return "Hello World!";}public static void main(String[] args) throws Exception {SpringApplication.run(Example.class, args);}
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Jersey

Jersey RESTful框架是开源的,它基于JAX-RS规范。Jersey应用程序可以扩展现有的JAX-RS实现,并通过添加功能和实用工具,使得RESTful服务更为简单,客户端开发变得更加轻松。

Jersey最好的一点是,它的文档很详细,有很多例子。它的速度很快,路由也非常简单。

关于如何开始使用Jersey的文档在这里,而更多的文档可以在这里找到。

你可以尝试运行下面的示例代码:

package org.glassfish.jersey.examples.helloworld;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@Path("helloworld")
public class HelloWorldResource {public static final String CLICHED_MESSAGE = "Hello World!";@GET@Produces("text/plain")public String getHello() {return CLICHED_MESSAGE;}
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Jersey可以很容易地与其他库一起使用,如Netty或Grizzly,它支持异步连接。它不需要servlet容器。然而,它确实很粗鲁地依赖注入实现。

Play框架

Play框架可以让你很方便地使用Scala和Java来构建、创建和部署Web应用程序。对于需要并行处理远程调用的RESTful应用程序来说,Play框架是理想的选择。它是模块化的,支持异步。Play框架的社区也是所有微服务框架中最大的社区之一。

你可以尝试运行下面的示例代码:

package controllers;
import play.mvc.*;
public class Application extends Controller {public static void index() {render();}public static void sayHello(String myName) {render(myName);}
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Restlet

Restlet可以帮助开发人员创建遵循RESTful架构模式的快速而又可扩展的Web API。它具有不错的路由和过滤功能,可用于Java SE/EE、OSGi、Google AppEngine(Google Compute的一部分)、Android和其他主要的平台。

由于它的社区是封闭的,因此Restlet的学习曲线比较陡峭,但是你可以从StackOverflow上获得帮助。

示例代码:

package firstSteps;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
/** * Resource which has only one representation. */
public class HelloWorldResource extends ServerResource {@Getpublic String represent() {return "hello, world";}
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

有关微服务更多的资源和教程

Java微服务框架一览

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/25153860.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

SpringBoot+Redis启动报错Unsatisfied dependency expressed through method stringRedisTemplate parameter 0;

SpringBoot+Redis启动报错 Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name redisTool: Unsatisfied dependency expressed through field stringRedisTemplate; nested exception is org.springfra…

图解 SQL 执行顺序,通俗易懂!

数据的关联过程from&join&where group by having&where select order by limit这是一条标准的查询语句: 这是我们实际上SQL执行顺序:我们先执行from,join来确定表之间的连接关系,得到初步的数据 where对数据进行普通的初步的筛选 group by 分组 各组分别执行hav…

【uniapp踩坑记】——微信小程序转发保存图片

关于微信小程序转发&保存图片已经好多年没写博客了,最近使用在用uniapp开发一个移动版管理后台,记录下自己踩过的一些坑微信小程序图片转发保存简单说明 微信小程序图片转发保存,依赖小程序的转发api—— wx.showShareImageMenu(Object object) 通过调用这个api能触发如…

【转载】WPF中TreeView控件数据绑定和后台动态添加数据(一)

原文链接:https://www.cnblogs.com/larissa-0464/p/10227483.html 数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码。 xaml代码:<TreeView Name="syntaxTree" ItemsSource="{Binding TreeNodes}"><TreeView.ItemTemplate&g…

实验二。

include <stdio.h> include<stdlib.h> include<time.h> define N 5 int main() { int number; int i; srand(time(0));for(i=0;i<N;++i){ number=rand()%65+1; printf("20238331%04d\n",number); } return 0;}问题一:一到六十五之间随…

httprunner 4.x学习 - 05校验(validate)

前言 HttpRunner4.x 内置了丰富的校验结果的方式 校验方式assert缩写说明equal "eq", "equals", "equal" 相等less_than "lt", "less_than" 小于less_or_equals "le", "less_or_equals" 小于或等于grea…