如何使用 Spring EL 注入 bean id?
How to inject the bean id with Spring EL?
我想将 XML 配置中的 id
传递给 bean 的构造函数。我不想实施 BeanNameAware 来执行此操作。我首选的方式是使用 Spring EL 表达式,如下所示:
<bean id="ws1" class="com.example.MyClass">
<constructor-arg name="id" value="#{#this.id}"/>
<!-- ... -->
</bean>
但是,#this
在这种情况下指的是 BeanExpressionContext
,不包含 id
。
有没有办法使用 Spring EL 表达式访问 id
(在我的示例中为 ws1
)?
如果你需要知道目标MyClass
实例中的bean id,你应该考虑实现BeanNameAware
:
* Interface to be implemented by beans that want to be aware of their
* bean name in a bean factory. Note that it is not usually recommended
* that an object depends on its bean name, as this represents a potentially
* brittle dependence on external configuration, as well as a possibly
* unnecessary dependence on a Spring API.
但是,您不能从 SpEL 访问它。 OTOH 我没有看到你的样本中的大问题 copy/paste ws1
到 id
构造函数 arg 值。
我想将 XML 配置中的 id
传递给 bean 的构造函数。我不想实施 BeanNameAware 来执行此操作。我首选的方式是使用 Spring EL 表达式,如下所示:
<bean id="ws1" class="com.example.MyClass">
<constructor-arg name="id" value="#{#this.id}"/>
<!-- ... -->
</bean>
但是,#this
在这种情况下指的是 BeanExpressionContext
,不包含 id
。
有没有办法使用 Spring EL 表达式访问 id
(在我的示例中为 ws1
)?
如果你需要知道目标MyClass
实例中的bean id,你应该考虑实现BeanNameAware
:
* Interface to be implemented by beans that want to be aware of their
* bean name in a bean factory. Note that it is not usually recommended
* that an object depends on its bean name, as this represents a potentially
* brittle dependence on external configuration, as well as a possibly
* unnecessary dependence on a Spring API.
但是,您不能从 SpEL 访问它。 OTOH 我没有看到你的样本中的大问题 copy/paste ws1
到 id
构造函数 arg 值。