2010-03-05 12 views

Respuesta

9

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> 
2

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.

2

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.

0

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/

Cuestiones relacionadas