java bean spring_JavaBean和Spring bean傻傻分不清楚

JavaBean的定义可序列化

提供无参构造

提供getter/setter方法

疑问

在学习 Spring 的过程中发现很多 bean 对象并没有实现 Serializable 接口或提供其他可序列化的操作。这种也叫 bean?或者 bean 也可以不提供序列化操作?

解决

stackoverflow 一番后,发现跟我有同样疑惑的人还不少。

最终答案

用户 keya 的回答如下:JavaBeans:

At a basic level, JavaBeans are simply Java classes which adhere to certain coding conventions. Specifically, classes thathave public default (no argument) constructors

allow access to their properties using accessor (getter and setter) methods

implement java.io.Serializable

Spring Beans:

A Spring bean is basically an object managed by Spring. More specifically, it is an object that is instantiated, configured and otherwise managed by a Spring Framework container. Spring beans are defined in Spring configuration files (or, more recently, with annotations), instantiated by Spring containers, and then injected into applications.

大致翻译JavaBeans:

简单来说,JavaBeans 只是遵循了特定编码规范的 Java 类,即提供默认公有无参构造

提供 getter/setter 方法

实现java.io.Serializable接口

Spring Beans:

Spring bean 是由 Spring 管理的对象。具体来说,它是由 Spring Framework 容器实例化、配置和管理的对象。Spring beans 在 Spring 配置文件中定义(近来更多使用的是注解的方式实现),由 Spring 容器实例化,然后注入到应用程序中(博主理解,即DI)。

补充

答主 keya 还提到Note that Spring beans need not always be JavaBeans. Spring beans might not implement the java.io.Serializable interface, can have arguments in their constructors, etc.

This is the very basic difference between JavaBeans and Spring beans.

For more information, refer to the source of the above text, Shaun Abram’s article JavaBeans vs Spring beans vs POJOs.

大意:Spring beans 不一定是 JavaBeans。Spring beans 可以不实现java.io.Serializable接口,也可以提供有参构造等等。

Shaun Abram 的文章中主要有两点补充:Spring beans 可以是 POJOs 吗?可以是,并且通常是。也可以不是,比如Spring也可以用于EJB(简单理解就是一种重量级Java对象)。

Spring beans 可以是 JavaBeans 吗? 答案同样,可以是,并且通常是。也可以不是。

最后,根据本人实测,Spring bean可以不实现java.io.Serializable接口

可以不提供构造方法

可以不提供getter/setter方法

即,Spring bean 和 JavaBean 没有半毛钱关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值