В чём отличия обычного bean от bean в Spring?
Может быть вопрос сформулирован не совсем корректно, поправьте. Я пытался найти определение bean, потому что столкнулся с тем, что определения в разных источниках разные.
Первое определение (ссылка для примера): JavaBean - это объект Java, который удовлетворяет определенным правилам программирования: Класс JavaBean должен реализовывать либо Serializable, либо Externalizable, Класс JavaBean должен иметь конструктор без аргументов, Все свойства JavaBean должны иметь публичные методы установки и получения, Все переменные экземпляра JavaBean должны быть закрытыми.
Второе определение (ссылка для примера): В Spring-е бином (bean) называют любой класс, который управляется контейнером Spring.
Плюс к этим двум определениям существует ещё таинственный Java EE Beans...
Целых три определения bean в одной Java!
И из-за этого возникла путаница. Очевидно, эти три определения отличаются (причём по второй ссылке ответ, который содержал в себе определение из первой ссылки, заминусили). Получается, первое определение справедливо для обычной Java, второе именно для Spring, а третье для EE? Тогда зачем обычные классы в ванильной Java называют бинами, если это обычные классы?
Объясните пожалуйста.
Ответы (1 шт):
На базовом уровне JavaBeans-это просто классы Java, которые придерживаются определенных соглашений о кодировании. В частности, классы, которые
имеют открытые конструкторы по умолчанию (без аргументов) разрешают доступ к их свойствам с помощью методов accessor (getter и setter) implement java.io.Serializable
Spring bean-это в основном объект, управляемый Spring. Более конкретно, это объект, который создается, настраивается и иным образом управляется контейнером Spring Framework. Компоненты Spring определяются в файлах конфигурации Spring (или, в последнее время, с аннотациями), создаются экземплярами контейнеров Spring и затем вводятся в приложения.
Обратите внимание, что Spring beans не всегда должны быть JavaBeans. Spring beans может не реализовывать интерфейс java.io.Serializable, может иметь аргументы в своих конструкторах и т. д.
Это самое основное различие между JavaBeans и Spring beans.
Для получения дополнительной информации обратитесь к источнику приведенного выше текста, статье Шона Абрама JavaBeans vs Spring beans vs POJOs
Можно почитать здесь