Java微服务:代码示例、教程
随着开发人员致力于创建更大、更复杂的应用程序,微服务在开发领域得到了越来越多的使用,这些应用程序作为小型服务的组合得到了更好的开发和管理,这些服务协同工作以实现更大、应用程序范围的功能。工具正在兴起,以满足使用逐件方法来思考和构建应用程序的需要。坦白说,与同时考虑整个应用程序相比,这种方法更令人难以置信。今天,我们将了解微服务、使用此功能的好处以及一些代码示例。
微服务是一种面向服务的体系结构风格(Java开发人员最重要的技能之一),其中应用程序构建为不同小型服务的集合,而不是一个完整的应用程序。你有几个独立的应用程序,它们可以独立运行,可以使用不同的编码或编程语言创建,而不是单一的应用程序。大型和复杂的应用程序可以由简单和独立的程序组成,这些程序可以自己执行。这些较小的程序组合在一起,提供大型单片应用程序的所有功能。
Microservices捕获您的业务场景,回答“您试图解决什么问题?”的问题。它通常由只有少数成员的工程团队开发,可以用任何编程语言编写,也可以使用任何框架。每个涉及的程序都有独立的版本、执行和扩展。这些微服务可以与其他微服务交互,并且可以具有唯一的URL或名称,同时即使遇到故障也始终可用并保持一致。
使用微服务有几个好处。首先,因为这些较小的应用程序不依赖于相同的编码语言,所以开发人员可以使用他们最熟悉的编程语言。这有助于开发人员以更低的成本和更少的bug更快地开发出一个程序。敏捷性和低成本还可以来自于能够在其他项目上重用这些较小的程序,从而提高效率。
有几种微服务框架可用于Java开发。其中一些是:
- Spring Boot:这可能是最好的Java微服务框架,它可以在控制反转、面向方面编程等语言之上工作。
- Jersey:这个开源框架支持Java中的JAX-RSAPI,非常易于使用。
- Swagger:帮助您记录API,并为您提供一个开发门户,允许用户测试您的API。
您可以考虑的其他内容包括:DooWrar、Nuja Web框架、Play框架、REST Exchange、RestRead、RESX和SCAP框架。
DropWizard将成熟和稳定的Java库整合到轻量级软件包中,您可以将其用于自己的应用程序。它使用Jetty表示HTTP,Jersey表示REST,Jackson表示JSON,以及Metrics、Guava、Logback、Hibernate Validator、ApacheHttpClient、Liquibase、Mustache、Joda Time和Freemarker。
您可以使用Maven设置Dropwizard应用程序。怎样
在POM中,使用最新版本的dropwizard添加 dropwizard.version 属性。
这将为您设置一个Maven项目。从这里,您可以创建配置类、应用程序类、表示类、资源类或运行状况检查,还可以构建胖jar,然后运行应用程序。
请在此链接查看Dropwizard用户手册( )。GitHub库就在这里( )。
示例代码:
SpringBoot为您提供了Java应用程序,可通过嵌入式服务器与您自己的应用程序一起使用。它使用Tomcat,因此您不必使用JavaEE容器。
您可以在这里找到所有springboot项目,您将认识到springboot拥有应用程序所需的所有基础设施。不管你是为安全、配置还是大数据编写应用程序;它有一个Spring Boot项目。
Spring Boot项目包括:
- Spring IO平台:版本化应用程序的企业级分发。
- Spring框架:用于事务管理、依赖项注入、数据访问、消息传递和web应用程序。
- SpringCloud:用于分布式系统,用于构建或部署微服务。
- Spring数据:对于与数据访问相关的微服务,可以是map reduce、关系型或非关系型。
- Spring批处理:用于高级别的批处理操作。
- Spring安全性:用于授权和身份验证支持。
- SpringREST文档:用于记录RESTful服务。
- SpringSocial:用于连接社交媒体API。
- Spring Mobile:用于移动Web应用程序。
示例代码:
Jersey RESTful框架是开源的,它基于JAX-RS规范。Jersey的应用程序可以扩展现有的JAX-RS实现,并添加使RESTful服务更简单的特性和实用程序,以及使客户机开发更容易。
Jersey最好的地方是它有大量的文档,其中充满了示例。它速度也很快,路由也非常简单。
关于如何开始使用Jersey的文档位于此链接:
您可以尝试的示例代码:
Jersey非常容易与其他库(如Netty或Grizzly)一起使用,并且它支持异步连接。它不需要servlet容器。但是,它确实有一个未完成的依赖注入实现。
Play Framework为您提供了使用Scala和Java构建、创建和部署Web应用程序的更简单方法。Play框架非常适合需要并行处理远程调用的RESTful应用程序。它也是非常模块化的,支持异步。Play框架也是所有微服务框架中最大的社区之一。
您可以尝试的示例代码:
Restlet帮助开发人员创建符合RESTful架构模式的快速、可伸缩的Web api。它具有良好的路由和过滤功能,可用于JavaSE/EE、OSGi、Google AppEngine(Google Compute的一部分)、Android和其他主要平台。
Restlet有一个陡峭的学习曲线,封闭的社区会使学习曲线变得更糟。
示例代码:
原文地址:
Java注解最全详解(超级详细)
Java注解是一个很重要的知识点,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。
掌握好Java注解有利于学习框架底层实现。@mikechen
Java注解又称Java标注,是在 JDK5 时引入的新特性,注解(也被称为元数据)。
Java注解它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
1.生成文档这是最常见的,也是java 最早提供的注解;
2.在编译时进行格式检查,如@Override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出;
3.跟踪代码依赖性,实现替代配置文件功能,比较常见的是spring 2.5 开始的基于注解配置,作用就是减少配置;
4.在反射的 Class, Method, Field 等函数中,有许多于 Annotation 相关的接口,可以在反射中解析并使用 Annotation。
包括@Override、@Deprecated、@SuppressWarnings等,使用这些注解后编译器就会进行检查。
元注解是用于定义注解的注解,包括@Retention、@Target、@Inherited、@Documented、@Repeatable 等。元注解也是Java自带的标准注解,只不过用于修饰注解,比较特殊。
用户可以根据自己的需求定义注解。
JDK 中内置了以解:
如果试图使用 @Override 标记一个实际上并没有覆写父类的方法时,java 编译器会告警。
@SuppressWarnings 用于关闭对类、方法、成员编译时产生的特定警告。
1)抑制单类型的警告
2)抑制多类型的警告
3)抑制所有类型的警告
@SuppressWarnings 注解的常见参数值的简单说明:
@FunctionalInterface 用于指示被修饰的接口是函数式接口,在 JDK8 引入。
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
元注解是java API提供的,是用于修饰注解的注解,通常用在注解的定义上:
@ Retention用来定义该注解在哪一个级别可用,在源代码中(SOURCE)、类文件中(CLASS)或者运行时(RUNTIME)。
@Retention 源码:
RetentionPolicy 是一个枚举类型,它定义了被 @Retention 修饰的注解所支持的保留级别:
@Documented:生成文档信息的时候保留注解,对类作辅助说明
@Documented 示例
@Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
@Target源码:
ElementType 是一个枚举类型,它定义了被 @Target 修饰的注解可以应用的范围:
@Inherited:说明子类可以继承父类中的该注解
表示自动继承注解类型。 如果注解类型声明中存在 @Inherited 元注解,则注解所修饰类的所有子类都将会继承此注解。
@Repeatable 表示注解可以重复使用。
当我们需要重复使用某个注解时,希望利用相同的注解来表现所有的形式时,我们可以借助@Repeatable注解。以 Spring @Scheduled 为例:
如果不满足于文章详解,私信【架构】获取视频详解!
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。