我认为,我理解“Bean”是一个具有财产和getters/setter的Java-class。据我所知,它相当于C结构。这是真的吗?
此外,JavaBean和常规类之间是否存在真正的语法差异?是否有特殊定义或接口?
基本上,为什么有一个术语?
Serializable接口是什么意思?
我认为,我理解“Bean”是一个具有财产和getters/setter的Java-class。据我所知,它相当于C结构。这是真的吗?
此外,JavaBean和常规类之间是否存在真正的语法差异?是否有特殊定义或接口?
基本上,为什么有一个术语?
Serializable接口是什么意思?
当前回答
Spring@Bean注释表示一个方法生成一个由Spring容器管理的Bean。
更多参考:https://www.concretepage.com/spring-5/spring-bean-annotation
其他回答
JavaBean是一个Java类(概念性),应该遵循以下约定:
它应该有一个无参数构造函数。它应该是可序列化的。它应该提供设置和获取财产值的方法,称为getter和setter方法。
它是一个可重用的软件组件。它可以将多个对象封装到一个对象中,以便可以从多个位置访问同一个对象,这是代码易于维护的一步。
JavaBeans用于更少的代码和更多的工作方法。。。
JavaBeans在整个JavaEE中被用作运行时发现和访问的通用契约。例如,JavaServerPages(JSP)使用JavaBeans作为页面之间或servlet和JSP之间的数据传输对象。Java EE的JavaBeans激活框架使用Java Beans将对MIME数据类型的支持集成到Java EE中。Java EE管理API使用JavaBeans作为在Java EE环境中管理的资源插入的基础。
关于序列化:
在对象序列化中,对象可以表示为一个字节序列,其中包括对象的数据以及关于对象类型和存储在对象中的数据类型的信息。
序列化对象写入文件后,可以从文件中读取并反序列化,也就是说,可以使用表示对象及其数据的类型信息和字节在内存中重新创建对象。
有一个术语可以让它听起来很特别。现实远没有那么神秘。
基本上,一个“憨豆”:
是一个可串行化的对象(即,它实现java.io.serializable,并正确执行)具有“财产”,其getter和setter只是具有特定名称的方法(例如,getFoo()是“Foo”属性的getter),并且有一个公共的零参数构造函数(因此可以随意创建并通过设置其财产进行配置)。
至于Serializable:这只是一个“标记接口”(一个不声明任何函数的接口),它告诉Java实现类同意(并暗示它能够)“序列化”——一个将实例转换为字节流的过程。这些字节可以存储在文件中,通过网络连接等发送,并且具有足够的信息,允许JVM(至少是一个了解对象类型的JVM)稍后重建对象——可能在应用程序的不同实例中,甚至在整个其他机器上!
当然,为了做到这一点,班级必须遵守某些限制。其中最主要的是,所有实例字段必须要么是原始类型(int、bool等),要么是某些类的实例,也可以是可序列化的,要么标记为瞬时的,这样Java就不会试图包含它们。(这当然意味着瞬态字段将无法在流上运行。如果需要,具有瞬态字段的类应该准备好重新初始化它们。)
不能遵守这些限制的类不应该实现Serializable(而且,IIRC,Java编译器甚至不允许它这样做)
当在多个服务器上部署项目时,您会发现序列化非常有用,因为bean将在它们之间持久化和传输。
JavaBean是JavaBeans体系结构中的一个组件或基本构建块。JavaBeans体系结构是一种组件体系结构,它受益于基于组件的方法的可重用性和互操作性。
有效的组件体系结构应允许程序从软件构建块(在本例中为Beans),可能由不同的供应商提供,也使架构师/开发人员能够选择组件(Bean),了解其功能,并将其合并到应用程序中。
因为类/对象是像Java这样的OOP语言的基本构建块,所以它们是JavaBeans体系结构中Bean的自然竞争者。
将普通Java类转换为Javabean的过程实际上只不过是使其成为可重用和可互操作的组件。这将转化为具有以下功能的Java类:
控制向其他应用程序公开的类的财产、事件和方法。(您可以有一个BeanInfo类,它只报告外部应用程序需要的那些财产、事件和方法。)持久性(可串行化或可外部化-这也意味着没有参数构造函数,对字段使用瞬态)注册事件和生成事件的能力(例如,使用绑定和约束财产)定制器(通过GUI或提供文档来定制Bean)
为了将Java类称为Javabean,它们不需要具备上述所有能力。相反,它意味着实现上述与上下文相关的子集(例如,某个框架中的bean可能不需要自定义程序,其他一些bean可能并不需要绑定和约束的财产,等等)
为了获得上述好处,Java中几乎所有领先的框架和库都隐式地遵循JavaBeans体系结构。