Esta es una pregunta básica: ¿cuándo se carga el bean de primavera y si tengo un constructor y los establecedores cuál se llamará primero?cuando se carga spring bean y si tengo un constructor y setters, ¿cuál se llamará primero?
Gracias
Esta es una pregunta básica: ¿cuándo se carga el bean de primavera y si tengo un constructor y los establecedores cuál se llamará primero?cuando se carga spring bean y si tengo un constructor y setters, ¿cuál se llamará primero?
Gracias
El constructor debe ser llamado antes de se llaman los métodos setter. Usar la init-method
para contar la primavera para invocar alguna lógica después los emisores se llaman:
<bean class="my.CoolClass" init-method="startup">
<constructor-arg value="Foo" />
<property name="bar" value="baz" />
</bean>
no el constructor han de ser llamado por primera vez? Los setters son métodos de instancia, por lo que no pueden invocarse hasta que se crea una instancia del objeto.
No creo que Spring proporcione ninguna garantía sobre el orden en que se llaman los instaladores. Sería una buena práctica hacer que sus beans funcionen independientemente del orden al que se llamen los incubadores. Si desea procesar algo después de haber llamado a todos los instaladores, puede encontrar que es conveniente usar un post construction method. O si está utilizando la configuración XML en lugar de anotaciones, an initialization method podría ser adecuado.
escribí sencilla configuración XML y desplazarse por el código fuente de la primavera en depurador.
parece que con 3.x primavera es posible combinar y propiedad constructor-arg en XML frijol definición (comprobar doCreateBean en AbstractAutowireCapableBeanFactory.java
, que llaman createBeanInstance - constructor y populateBean próximo - setters).
Véase también https://softwareengineering.stackexchange.com/questions/149378/both-constructor-and-setter-injection-together-in-spring/