-
应用服务器是抽象 Java EE 规范的具体实现。示例:Payara 服务器 (Glassfish)、IBM OpenLiberty 和 JBoss Wildfly。
-
Java 规范请求(JSR) 是向 Java 社区提出的添加和改进技术的正式请求。它是 Java 技术平台上 API 标准化的一个主体,用于将 API 分组为块,例如 JAX-RS(Java API for RESTful Web Services)。对于每个 JSR,总是有一个默认的参考实现。
-
参考实现是抽象 JSR 的具体实现/实现。例如,JAX-RS 的参考实现称为 Jersey。Java EE 本身就是一个 JSR。因此,应用程序服务器是不同 Java EE JSR 参考实现的集合。Java EE 是 JSR 366,其参考实现之一是 Glassfish 5。
-
Jakarta EE是从 2018 年开始的 Java EE 的新名称。目前,Oracle已将Java平台移交给Eclipse基金会管理。
JavaEE基础知识
Java EE 中有三个关键 API:-
Java 持久性 API (JPA)。它负责存储和检索关系数据库中的信息,可以扩展为与 NoSQL 数据库一起使用。这是应用程序中的数据层。
-
上下文和依赖注入 (CDI API)。它是减少应用程序耦合的标准化方法。它管理各种组件交互以确保自由解耦。
-
用于 RESTful Web 服务的 Java API (JAX-RS)。它通过 HTTP 将资源作为 Web 服务提供。
上下文和依赖注入 API
依赖注入是一种特殊形式的反转控制(一种软件策略,其中各个组件接收其依赖项)。这将应用程序中的依赖性外部化以创建低耦合组件。CDI的特点
-
依赖注入(Typesafe)允许您声明对类型的依赖关系,以便编译器在运行时捕获错误。
-
生命周期上下文是将生命周期和有状态组件交互与定义良好但可扩展的生命周期组件联系起来的能力。
-
拦截器允许您拦截访问特定方法的请求。
-
事件是开发高度解耦应用程序的一种方法。当 Observers 方法监听已触发的事件时,可以触发事件。
-
服务提供商接口 (SPI)是一组可用作扩展的技术、API 和接口,例如在 Apache 库中。
一些 CDI API 概念:
-
CDI Bean Discovery是依赖注入框架解析和发现bean的机制,用于控制默认情况下如何发现bean,即带有@Annotated等注解的bean。Bean 发现模式分为三种类型:ALL(包括未注释的 Bean)、ANNOTATED 和 NONE。
-
CDI 容器是一种工厂方法,Java 类在其中输入和输出其功能和能力。这是管理 bean 的应用程序。
-
Bean 和上下文实例。bean 是开发人员创建的模板。上下文实例是由 CDI 容器创建和管理的 Bean 实例。
Java持久化API
JPA 用于将对象映射到关系数据库表。Java Persistence API 遵循 ORM 宣言的原则。 ORM清单(对象关系映射清单):-
对象,而不是表:开发人员编写对象,而不是表。
-
方便,而不是无知: ORM 应该方便。开发人员应该具备最低限度的关系数据库知识。ORM 不是一种隐藏无知的方法,而是一种便利。
-
不引人注目且透明: ORM 应该使开发人员能够控制数据库中的内容并完全控制保存的内容。遗留数据,新对象:ORM将允许您从遗留数据创建新对象,即将遗留数据库重建为Java对象。
-
足够,但不会太多: ORM 将提供所有工具来解决由于阻抗不匹配(该术语用于指由于数据库模型和编程语言之间的差异而出现的问题)引起的常见问题。ORM 不应该太重。
-
局部性和移动性:数据是本地的,但应用程序的持久状态必须可以移动到应用程序的不同部分。
-
标准API,可插拔实现:依赖标准API,但可以根据需要更改实现。
-
JPA 对象最模块化的组件是普通的旧 Java 对象 (POJO)。每个对象必须有一个唯一的标识符。
-
JPA 实体通常使用 @MappedSuperClass 等注释,它允许使用包含公共实体字段的超类。@AttributeOverride 注解用于覆盖超类实体。@Column用于配置数据库映射。@Transient 注释可用于实体类中不应映射到数据库的字段。
-
访问类型是持久性提供者访问实体中的状态的过程。当提供者通过反射直接访问类的字段时,就会发生字段访问。当使用 Java Bean 属性方法访问状态(即使用 getter 和 setter)时,就会发生属性访问。要使用属性访问,getter 必须使用 @Id 进行注释。混合访问类型使用 @Access 注释来访问同一实体类中的字段和属性。
用于 RESTful Web 服务的 Java API
REST架构的局限性:-
客户端和服务器是相互独立的。
-
无状态:到达服务器的每个单独请求都是自主且唯一的。服务器不会对先前的请求做出任何假设。
-
可缓存性:系统必须支持不同级别的缓存,以提高性能和可扩展性。
-
统一接口意味着客户端必须有一个通用的统一接口来访问服务器上的资源,以及与服务器上的资源进行交互。多层系统:服务器可以在不同的层中实现,这样客户端就不必担心多层系统,例如支持负载均衡的服务器。
-
HTTP GET 方法:请求一个或多个资源。GET 请求方法是幂等的,这意味着重复向该方法发出相同的请求不会改变服务器上资源或数据的状态。
-
HTTP POST 方法:POST 请求用于在服务器上创建新资源。这会导致服务器上的数据集发生更改。POST 通常有一个正文,其中发布或附加了有效负载或我们想要在服务器上创建的任何内容。
-
HTTP PUT 方法:语义上用于更新服务器上的资源。
-
HTTP DELETE 方法:用于删除服务器上的资源。
-
内容类型。可以通过查询方法使用和创建多种类型的内容:XML、CSV、EXCEL、TEXT 和 JSON。
-
JAX-RS 具有编写消息正文的概念。这些是用于将 Java 类型转换为客户端期望的类型的 API 构造。@Produces 注释可用于指定 Java 对象的响应转换为的类型。
-
@Consumes 注释告诉 JAX-RS 运行时给定资源方法正在使用的内容类型。然后,JAX-RS 运行时将作为有效负载传递的 JSON 内容转换为类型与方法参数相同的 Java 对象。
-
JAX-RS 异常映射器:用于将异常映射到 HTTP 响应的 API 构造。@Provider 注释用于以编程方式向 JAX-RS 运行时注册异常解析器。
GO TO FULL VERSION