自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java微服務(wù):代碼示例、教程

開發(fā) 前端
工具正在興起,以滿足使用逐件方法來思考和構(gòu)建應(yīng)用程序的需要。坦白說,與同時(shí)考慮整個(gè)應(yīng)用程序相比,這種方法更令人難以置信。今天,我們將了解微服務(wù)、使用此功能的好處以及一些代碼示例。

隨著開發(fā)人員致力于創(chuàng)建更大、更復(fù)雜的應(yīng)用程序,微服務(wù)在開發(fā)領(lǐng)域得到了越來越多的使用,這些應(yīng)用程序作為小型服務(wù)的組合得到了更好的開發(fā)和管理,這些服務(wù)協(xié)同工作以實(shí)現(xiàn)更大、應(yīng)用程序范圍的功能。工具正在興起,以滿足使用逐件方法來思考和構(gòu)建應(yīng)用程序的需要。坦白說,與同時(shí)考慮整個(gè)應(yīng)用程序相比,這種方法更令人難以置信。今天,我們將了解微服務(wù)、使用此功能的好處以及一些代碼示例。

[[430842]]

什么是微服務(wù)?

微服務(wù)是一種面向服務(wù)的體系結(jié)構(gòu)風(fēng)格(Java開發(fā)人員最重要的技能之一),其中應(yīng)用程序構(gòu)建為不同小型服務(wù)的集合,而不是一個(gè)完整的應(yīng)用程序。你有幾個(gè)獨(dú)立的應(yīng)用程序,它們可以獨(dú)立運(yùn)行,可以使用不同的編碼或編程語(yǔ)言創(chuàng)建,而不是單一的應(yīng)用程序。大型和復(fù)雜的應(yīng)用程序可以由簡(jiǎn)單和獨(dú)立的程序組成,這些程序可以自己執(zhí)行。這些較小的程序組合在一起,提供大型單片應(yīng)用程序的所有功能。

Microservices捕獲您的業(yè)務(wù)場(chǎng)景,回答“您試圖解決什么問題?”的問題。它通常由只有少數(shù)成員的工程團(tuán)隊(duì)開發(fā),可以用任何編程語(yǔ)言編寫,也可以使用任何框架。每個(gè)涉及的程序都有獨(dú)立的版本、執(zhí)行和擴(kuò)展。這些微服務(wù)可以與其他微服務(wù)交互,并且可以具有唯一的URL或名稱,同時(shí)即使遇到故障也始終可用并保持一致。

微服務(wù)的好處是什么?

使用微服務(wù)有幾個(gè)好處。首先,因?yàn)檫@些較小的應(yīng)用程序不依賴于相同的編碼語(yǔ)言,所以開發(fā)人員可以使用他們最熟悉的編程語(yǔ)言。這有助于開發(fā)人員以更低的成本和更少的bug更快地開發(fā)出一個(gè)程序。敏捷性和低成本還可以來自于能夠在其他項(xiàng)目上重用這些較小的程序,從而提高效率。

Java微服務(wù)框架示例

有幾種微服務(wù)框架可用于Java開發(fā)。其中一些是:

  • Spring Boot:這可能是最好的Java微服務(wù)框架,它可以在控制反轉(zhuǎn)、面向方面編程等語(yǔ)言之上工作。
  • Jersey:這個(gè)開源框架支持Java中的JAX-RSAPI,非常易于使用。
  • Swagger:幫助您記錄API,并為您提供一個(gè)開發(fā)門戶,允許用戶測(cè)試您的API。

您可以考慮的其他內(nèi)容包括:DooWrar、Nuja Web框架、Play框架、REST Exchange、RestRead、RESX和SCAP框架。

如何使用DropWizard創(chuàng)建

DropWizard將成熟和穩(wěn)定的Java庫(kù)整合到輕量級(jí)軟件包中,您可以將其用于自己的應(yīng)用程序。它使用Jetty表示HTTP,Jersey表示REST,Jackson表示JSON,以及Metrics、Guava、Logback、Hibernate Validator、ApacheHttpClient、Liquibase、Mustache、Joda Time和Freemarker。

您可以使用Maven設(shè)置Dropwizard應(yīng)用程序。怎樣

在POM中,使用最新版本的dropwizard添加 dropwizard.version 屬性。

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

這將為您設(shè)置一個(gè)Maven項(xiàng)目。從這里,您可以創(chuàng)建配置類、應(yīng)用程序類、表示類、資源類或運(yùn)行狀況檢查,還可以構(gòu)建胖jar,然后運(yùn)行應(yīng)用程序。

請(qǐng)?jiān)诖随溄硬榭碊ropwizard用戶手冊(cè)( http://www.dropwizard.io/1.1.0/docs/manual/index.html )。GitHub庫(kù)就在這里( https://github.com/dropwizard/dropwizard )。

示例代碼:

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

帶Spring Boot的微服務(wù)

SpringBoot為您提供了Java應(yīng)用程序,可通過嵌入式服務(wù)器與您自己的應(yīng)用程序一起使用。它使用Tomcat,因此您不必使用JavaEE容器。

您可以在這里找到所有springboot項(xiàng)目,您將認(rèn)識(shí)到springboot擁有應(yīng)用程序所需的所有基礎(chǔ)設(shè)施。不管你是為安全、配置還是大數(shù)據(jù)編寫應(yīng)用程序;它有一個(gè)Spring Boot項(xiàng)目。

Spring Boot項(xiàng)目包括:

  • Spring IO平臺(tái):版本化應(yīng)用程序的企業(yè)級(jí)分發(fā)。
  • Spring框架:用于事務(wù)管理、依賴項(xiàng)注入、數(shù)據(jù)訪問、消息傳遞和web應(yīng)用程序。
  • SpringCloud:用于分布式系統(tǒng),用于構(gòu)建或部署微服務(wù)。
  • Spring數(shù)據(jù):對(duì)于與數(shù)據(jù)訪問相關(guān)的微服務(wù),可以是map reduce、關(guān)系型或非關(guān)系型。
  • Spring批處理:用于高級(jí)別的批處理操作。
  • Spring安全性:用于授權(quán)和身份驗(yàn)證支持。
  • SpringREST文檔:用于記錄RESTful服務(wù)。
  • SpringSocial:用于連接社交媒體API。
  • Spring Mobile:用于移動(dòng)Web應(yīng)用程序。

示例代碼:

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

Jersey

Jersey RESTful框架是開源的,它基于JAX-RS規(guī)范。Jersey的應(yīng)用程序可以擴(kuò)展現(xiàn)有的JAX-RS實(shí)現(xiàn),并添加使RESTful服務(wù)更簡(jiǎn)單的特性和實(shí)用程序,以及使客戶機(jī)開發(fā)更容易。

Jersey最好的地方是它有大量的文檔,其中充滿了示例。它速度也很快,路由也非常簡(jiǎn)單。

關(guān)于如何開始使用Jersey的文檔位于此鏈接: https://eclipse-ee4j.github.io/jersey/

您可以嘗試的示例代碼:

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

 

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

Jersey非常容易與其他庫(kù)(如Netty或Grizzly)一起使用,并且它支持異步連接。它不需要servlet容器。但是,它確實(shí)有一個(gè)未完成的依賴注入實(shí)現(xiàn)。

Play框架

Play Framework為您提供了使用Scala和Java構(gòu)建、創(chuàng)建和部署Web應(yīng)用程序的更簡(jiǎn)單方法。Play框架非常適合需要并行處理遠(yuǎn)程調(diào)用的RESTful應(yīng)用程序。它也是非常模塊化的,支持異步。Play框架也是所有微服務(wù)框架中最大的社區(qū)之一。

您可以嘗試的示例代碼

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

Restlet

Restlet幫助開發(fā)人員創(chuàng)建符合RESTful架構(gòu)模式的快速、可伸縮的Web api。它具有良好的路由和過濾功能,可用于JavaSE/EE、OSGi、Google AppEngine(Google Compute的一部分)、Android和其他主要平臺(tái)。

Restlet有一個(gè)陡峭的學(xué)習(xí)曲線,封閉的社區(qū)會(huì)使學(xué)習(xí)曲線變得更糟。

示例代碼:

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

 

責(zé)任編輯:張燕妮 來源: 老K的Java博客
相關(guān)推薦

2017-10-24 14:48:34

微服務(wù)器示例教程

2020-03-30 11:30:52

微服務(wù)架構(gòu)數(shù)據(jù)

2021-01-14 09:55:21

Java微服務(wù)Go

2024-07-02 10:58:53

2021-12-29 08:30:48

微服務(wù)架構(gòu)開發(fā)

2024-11-06 16:27:12

2014-08-11 16:35:35

KafkaJava客戶端

2023-09-28 08:01:32

2024-04-22 13:42:32

大型語(yǔ)言模型人工智能

2018-12-12 09:59:47

微服務(wù)架構(gòu)分布式系統(tǒng)

2023-04-13 15:04:57

Java微服務(wù)架構(gòu)

2022-09-05 08:00:00

Java微服務(wù)AuraDB

2020-12-10 10:04:45

微服務(wù)Kubernetes容器

2022-03-31 08:15:38

微服務(wù)服務(wù)拆分架構(gòu)

2023-07-28 09:23:24

微服務(wù)架構(gòu)

2011-12-08 10:12:34

JavaNIO

2025-02-19 07:00:00

Java低代碼平臺(tái)微服務(wù)

2019-01-31 14:00:03

Java微服務(wù)框架

2022-07-08 11:19:29

微服務(wù)Java框架

2024-07-02 14:23:12

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)