如何使用 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 ws1id 构造函数 arg 值。