2017-09-21 11 views
0

idをXML設定からBeanのコンストラクタに渡したいとします。これを行うにはBeanNameAwareを実装したくありません。Spring ELでBean IDを挿入するには?

<bean id="ws1" class="com.example.MyClass"> 
    <constructor-arg name="id" value="#{#this.id}"/> 
    <!-- ... --> 
</bean> 

しかし、#this、この場合にはBeanExpressionContextを指し、idが含まれていdoesen't何:そうするための私の好適な方法は、このような春のEL式になります。

Spring EL式でid(私の例ではws1)にアクセスする方法はありますか?あなたがターゲットMyClassインスタンス内のBeanのIDを知る必要がある場合

答えて

2

、あなたは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あなたのサンプルでは、​​をそのidのコンストラクタのarg値にコピー/ペーストするのに大きな問題はありません。

+0

私は 'BeanNameAware'を実装したくないので、私はその名前をコピーします。大したことではありませんが、より洗練されたソリューションを探しました。 – deamon

+0

'id'は非常に特殊な属性なので、これで何もできません。プロパティープレースホルダを使用しています。今あなたがJavaの設定に移動すると考えて... –

関連する問題