一尘不染

使用构造函数arg字段填充Spring bean

java

我如何使用该字段注入包含Map的属性文件,以用作其他构造函数arg。

从属性文件加载地图

该bean当前使用以下命令进行设置:

<bean id="graphDbService" class="org.neo4j.kernel.EmbeddedGraphDatabase"
     init-method="enableRemoteShell" destroy-method="shutdown">

     <constructor-arg index="0" value= "data/neo4j-db"/>
         <constructor-arg index="1" value=?  />
</bean>

相当于Java:

Map<String,String> configuration =  EmbeddedGraphDatabase.loadConfigurations( "neo4j_config.props" );
GraphDatabaseService graphDb = new EmbeddedGraphDatabase( "data/neo4j-db", configuration );

谢谢


阅读 282

收藏
2020-12-03

共1个答案

一尘不染

像这样:

<bean id="configuration" class="org.neo4j.kernel.EmbeddedGraphDatabase" 
      factory-method="loadConfigurations">
   <constructor-arg value="neo4j_config.props"/>
</bean>

<bean id="graphDbService" class="org.neo4j.kernel.EmbeddedGraphDatabase"
     init-method="enableRemoteShell" destroy-method="shutdown">

     <constructor-arg index="0" value="data/neo4j-db"/>
     <constructor-arg index="1" ref="configuration"  />
</bean>

这利用了使用任意静态工厂方法创建bean的能力,在这种情况下,使用loadConfigurations()工厂工厂方法来创建configurationbean,然后将其注入到的适当构造函数中EmbeddedGraphDatabase

2020-12-03