參考:https://stackoverflow.com/questions/3295496/what-is-a-javabean-exactly
https://stackoverflow.com/questions/12517905/what-is-java-pojo-class-java-bean-normal-class
https://www.geeksforgeeks.org/pojo-vs-java-beans/
JavaBean僅僅是一個標准:
1. 所有的數據項都是private的(使用getter/setter進行設置)
2. 一個public的無參構造函數
3. implements Serializable接口
JavaBean和我們通常寫的Class沒有什么本質區別,你寫的Class如果復合上面的規范,那么它就是一個JavaBean。
既然和一般的Class沒有什么特殊區別,為什么要專門定義這么一個術語呢?因為符合JavaBean規范的類會給許多類庫的實現帶來便利。例如只要我們自己的類是一個JavaBean,那么類庫就可以直接對其進行stream處理。
Spring其實不要求我們實現的類符合JavaBean規范,只要這個類是一個POJO(沒有繼承預定義類的類,沒有實現預定義接口的類,沒有添加預定義注釋的類),就可以成為一個Spring組件。