form docs spring dependency-injection

spring - docs - Inyectar la dependencia de primavera en súper clase abstracta.



taglib spring jsp (3)

Tengo el requisito de inyectar la dependencia en la superclase abstracta usando el framework spring.

class A extends AbstractClassB{ private Xdao daox ; ... public setXdao() { ... } } class AbstractClassB{ .. private yDao daoy; public seyYdao() { ... } }

Necesito pasar la dependencia de superclase cada vez que ejemplifico la clase B abstracta (que puede clasificarse en cientos de formas en mi proyecto)

entrada en application.xml (archivo de contexto de primavera)

<bean id="aClass" class="com.mypro.A" <property name="daox" ref="SomeXDaoClassRef" /> <property name="daoy" ref="SomeYDaoClassRef"/> </bean>

¿Cómo puedo crear una referencia de bean de la súper clase AbstractClassB en application.xml para poder usarla en toda la creación de bean de subclase?


Puede crear una definición de bean abstracta y luego "subtipo" esa definición, por ejemplo,

<bean id="b" abstract="true" class="com.mypro.AbstractClassB"> <property name="daox" ref="SomeXDaoClassRef" /> </bean> <bean id="a" parent="b" class="com.mypro.A"> <property name="daoy" ref="SomeYDaoClassRef" /> </bean>

Estrictamente hablando, la definición para b ni siquiera requiere que especifique la clase, puede omitir eso:

<bean id="b" abstract="true"> <property name="daox" ref="SomeXDaoClassRef" /> </bean> <bean id="a" parent="b" class="com.mypro.A"> <property name="daoy" ref="SomeYDaoClassRef" /> </bean>

Sin embargo, para mayor claridad y para que sus herramientas tengan una mejor oportunidad de ayudarlo, a menudo es mejor dejarlo.

La sección 3.7 del Manual de Spring analiza la herencia de la definición del bean.


Puedes usar la bandera abstracta de Spring para decirle a Spring que una clase es abstracta. Luego, todas las implementaciones concretas simplemente pueden marcar este bean como su bean principal .

<bean id="abstractClassB" class="AbstractClassB" abstract="true"> <property name="yDao" ref="yDao" /> </bean> <bean id="classA" class="A" parent="abstractClassB"> <property name="xDao" ref="xDao" /> </bean>