Java Top.

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程

1.概述

在这篇简短的教程中,我们将研究“普通旧Java对象”的定义。或者简称POJO。

我们将看看Pojo如何与JavaBean进行比较,以及如何将我们的POJO转换为JavaBeans可能会有所帮助。

2.普通的旧java对象

2.1。什么是aPojo.

当我们谈论一个POJO时,金宝搏官网188be我们描述的是一种简单的类型,没有对任何特定框架的引用。Pojo没有命名约定对于我们的属性和方法。

让我们创建一个基本的员工pojo。它有三个属性;名字,姓氏和开始日期:

公共类employepojo {public string firstname;公共字符串姓名;私人LocalDate startDate可以;publiceepojo(String firstname,string lastname,localdate startdate){this.firstname = firstname;this.lastname = lastname;this.startdate = startdate;public string name(){返回this.firstname +“”+ this.lastname;publicdate getstart(){返回this.startdate;}}

这个类可以被任何Java程序使用,因为它不绑定到任何框架。

但是,我们没有遵循任何构造、访问或修改类状态的实际约定。

这种缺乏会议导致两个问题:

首先,它增加了编码器试图了解如何使用它的学习曲线。

第二,它可能会限制框架有助于通过配置的框架,了解如何使用该类,并扩充其功能。

为了探讨第二点,让我们使用员工jo.使用反思。因此,我们将开始找到其局限性一些。

2.2。与pojo的反思

让我们补充一下Commons-Beanutils.依赖性到我们的项目:

<依赖>  commons-beanutils   Commons-Beanutils   1.9.4  

现在,让我们检查一下POJO的属性:

< input type = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text " value = " text "

如果我们要打印出来物业名行员到控制台,我们只看到:

(开始)

在这里,我们看到我们只能得到开始作为类的属性。PropertyUtils没能找到另外两个。

如果我们使用其他库,我们也会看到同样的结果杰克逊处理员工jo。

理想情况下,我们会看到我们所有的属性:姓,开始日期。好消息是,许多Java库通过默认的涉及JavaBean命名约定的内容来支持。

3. JavaBeans.

3.1。什么是ajavabean.

javabean仍然是一个pojo,但介绍了一系列严格的规则,我们如何实现它:

  • 访问级别 - 我们的属性是私有的,我们会暴露Getters和Setter
  • 方法名——我们的getter和setter遵循getXsetx.公约(在布尔的情况下,ISX.可用于吸气工)
  • 默认构造函数 - 必须存在一个No-Argument构造函数,因此可以在不提供参数的情况下创建实例,例如在Deserialization期间
  • 可序列化 - 实施可序列化接口允许我们存储状态

3.2。员工jo.作为javabean.

那么,让我们尝试一下转换员工jo.进入javabean:

public class EmployeeBean implements Serializable {private static final long serialVersionUID = -3760445487636086034L;私人字符串firstName;私人字符串姓;私人LocalDate startDate可以;public EmployeeBean() {} public EmployeeBean(String firstName, String lastName, LocalDate startDate) {firstName = firstName;this.lastname = lastname;this.startdate = startdate;} public String getFirstName() {return firstName;} public void setFirstName(String firstName);firstName = firstName;} //附加的getter /setter}

3.3。与javabean的反思

当我们用反射检查我们的bean时,我们现在得到的完整列表:

[名字,lastName,startdate]

4.使用JavaBeans时权衡

所以,我们已经示出了一种方法,其中JavaBeans有用。请记住,每个设计选择都有权衡。

当我们使用JavaBeans时,我们也应该注意一些潜在的缺点:

  • 可变的-我们的javabean是可变的,因为它们的setter方法-这可能会导致并发性或一致性问题
  • 样板- 我们必须为大多数情况推出所有物业和定居者的Getters,这可能是不必要的
  • Zero-Argument构造函数- 我们经常在构造函数中需要参数,以确保对象在有效状态下实例化,但JavaBean标准要​​求我们提供零参数构造函数

鉴于这些权衡,框架也适合多年来的其他豆章。

结论

在本教程中,我们将POJO与JavaBeans进行了比较。

首先,我们学习了一个POJO是一个绑定到没有特定框架的Java对象,并且javabean是一种特殊类型的POJO,具有严格的惯例。

然后,我们看到一些框架和图书馆如何利用JavaBean命名约定来发现类的属性。

像往常一样,可以使用示例在GitHub

Java底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
本文评论关闭!