在依赖注入中动态初始化依赖对象?

时间:2012-12-24 07:04:17

标签: spring-mvc dependency-injection

为了初始化依赖对象,我们将'/WEB-INF/springmvc-servlet.xml'中的bean条目放在:

<bean id="carManager" class="springmvc.service.CarManager">
   <property name="carList">
     <list>
       <ref bean="car1"/>
       <ref bean="car2"/>
    </list>
    </property>
</bean>

对于参考bean“car1”和car2“我们有条目是:

<bean id="car1" class="springmvc.model.Car">
    <property name="id" value="1"/>
    <property name="brand" ref="brand1"/>
    <property name="model" value="SL 500"/>
    <property name="price" value="40000"/>
</bean>

<bean id="car2" class="springmvc.model.Car">
    <property name="id" value="2"/>
    <property name="brand" ref="brand2"/>
    <property name="model" value="607"/>
    <property name="price" value="35000"/>
</bean>

所以我的问题是我们可以动态地准备“car1”和“car2”bean。例如在“car1”bean我想要汽车列表谁的值超过40000所以我必须从数据库中获取数据所以如何调用我的服务或数据库查询来准备这样的bean是否可能?

1 个答案:

答案 0 :(得分:0)

您可以实现BeanDefinitionParser并覆盖其中的相应方法。

并使用

BeanDefinitionBuilder messageProcessorBuilder = BeanDefinitionBuilder.genericBeanDefinition(MessagingPostProcessor.class); messageProcessorBuilder.addConstructorArgValue(StringUtils.split(packageNames,“,”)); registry.registerBeanDefinition(MessagingPostProcessor.class.getName(),messageProcessorBuilder.getBeanDefinition());