Java spring容器XML配置引用是否可以使用另一个bean';财产

Java spring容器XML配置引用是否可以使用另一个bean';财产,java,spring,configuration,javabeans,Java,Spring,Configuration,Javabeans,我正在编写一个spring应用程序,我想做的是: <bean id="sqlClient" class="com.braoda.dao.sqclient.SqlclientWapper"> <property name="dataSource" ref="dataSource"/> </bean> <bean id="userDao" class="com.braoda.dao.user.UserDaoImpl"> <

我正在编写一个spring应用程序,我想做的是:

   <bean id="sqlClient"  class="com.braoda.dao.sqclient.SqlclientWapper">
    <property name="dataSource" ref="dataSource"/>
  </bean>

<bean id="userDao" class="com.braoda.dao.user.UserDaoImpl">
  <property name="sqlSession" ref="***sqlClient.SqlSessionFactoryBean***" />

正如代码所示,我希望使用来自“ref”的SpringXML属性配置,但是“ref”不是bean而是bean的属性。 这在春天是违法的还是我们不能像这样使用春天

是的,这是可能的

看看


显示类似于

的代码。可以使用
{…}
符号:

<property name="sqlSessionFactory" value="#{sqlMapClient.getSqlSessionFactory()}"/>

注:

  • ${…}
    可用于将Spring属性名替换为其值
  • #{…}
    可用于让Spring对表达式进行求值

更多详细信息,请参见。

这里,我不在Spring上下文XML中使用SqlSessionFactoryBean,因为数据源没有获取其完整信息,当应用程序启动时,我将从配置中心获取数据源信息(这是我们使用Zookeeper开发的配置管理)。因此,我将等待Spring上下文初始化,并从中心获取信息,然后我们将新建SqlSessionFactoryBeanyep,它可以工作。以下是我的spring配置: