Im Kontext von Spring ist eine Bean ein verwaltetes Objekt . Was ist ein verwaltetes Objekt? Es ist ein Objekt, das Spring kennt und das Spring weiß, wie es z. Eigenschaften injizieren, Callback-Methoden aufrufen usw.
Es gibt dann einen Unterschied zwischen einer regulären Java-Klasse (über die Spring nichts weiß) und beans (was Spring kennt).
Im Allgemeinen folgen Spring-Beans der Java-Bean-Konvention, sodass Spring sie leicht manipulieren kann. Wenn beispielsweise für die Bean die Eigenschaft xxx
angegeben wird, erwartet Spring, dass getXxx
und setXxx
vorhanden sind. Seit Spring 2.X ist es jedoch möglich, private Variablen mithilfe von Annotationen in Abhängigkeit zu injizieren. Daher ist es nicht länger notwendig, einen öffentlichen Setter zu definieren, um die Abhängigkeitsinjektion für eine Eigenschaft zu aktivieren.
(Der Begriff bean ist verwirrend in dem Sinne, dass er häufig verwendet wird, um entweder (1) etwas zu bezeichnen, das von einem Container verwaltet wird, wie eine Enterprise Java Bean (EJB) oder (2) etwas, das den Java-Bean-Konventionen entspricht.)
Die Java Bean-Spezifikation schreibt den Konstruktor no-arg, getters / setters und serializable aus, aber Spring erfordert nicht, dass Ihre Beans der Spezifikation folgen. Spring behandelt Plain Old Java Objects, unabhängig davon, ob sie der Java Bean-Spezifikation entsprechen oder nicht.
Was nützen Bohnen? Sie drücken Ihre Wünsche im Code aus. Alles, was Spring tut, verwaltet ihren Lebenszyklus und verbindet sie miteinander, um Ihre Ziele zu erreichen.
Eine Bean in Spring-Welt ist ein beliebiges Objekt, das mithilfe von Spring-Konventionen mithilfe der Bean-ID oder des Namens definiert wird. Seine Lebensdauer wird von Spring Container verwaltet. Die Bean kann ein POJO oder eine Factory-Instanz mit statischen Methoden sein. Es kann sogar eine JNDI-Ressource und keine Java Bean sein. Bean, das vom Spring-Container verwaltet wird, kann sogar eine Proxy-Bean sein, die die Bean verstecken kann (insbesondere bei TransactionProxyFactory).
Kurz gesagt, jede Bean, deren Lebensdauer vom Spring-Container verwaltet wird, ist eine Spring-Bean.
Eine Bean ist eine Klasse mit einem öffentlichen Standardkonstruktor, getters / setter (properties) und muss serialisierbar sein. wikipedia hat eine Erklärung dafür.
Auf diese Weise weiß das Spring-Framework, wie eine Instanz der Bean (öffentlicher Standardkonstruktor) erstellt wird und welche Eigenschaften (mit Reflektion) vorhanden sind