我正在使用基于引用的 NamespaceHandler 和 BeanDefinitionParser ,我想将 Spel 与 bean 引用一起使用。问题是,由于我们处于生命周期阶段,我无法在 NamespaceHandler 或 BeanDefinitionParser 中访问应用程序上下文,因此当我的 BeanDefinitionParser 解释 Spel 表达式时,它没有 BeanFactory 可用于使用 bean 引用评估 spel。知道如何处理吗?如果 SpEL 放置在 bean 属性上,我可以保留它并让 spring 解释它,但不幸的是,SpEL 位于 XML 中,将被解组为用于构造 bean 属性的对象模型。
已编辑:基于 Gary Russell 的建议
<bean id="securityDecriptor" class="com.fg.edee.integration.descriptor.security.SecurityDescriptorImpl">
<property name="securityModuleName" value="security"/>
<property name="securityModuleDescription" value="security"/>
</bean>
<bean id="moduleDescription" class="com.fg.edee.integration.descriptor.schema.ModuleDescription">
<property name="treeDescriptor">
<mtd:treeDescriptor>
<mtd:security rights="W" moduleId="#{ securityDecriptor.securityModuleId }" moduleName="#{ securityDecriptor.securityModuleName }">
<mtd:securityIdentifier identifierId="users" identifierName="users"/>
</mtd:security>
</mtd:treeDescriptor>
</property>
</bean>