pat*_*oid 20 java spring neo4j
如何使用该字段注入包含Map的属性文件作为附加构造函数arg.
从属性文件加载Map
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>
Run Code Online (Sandbox Code Playgroud)
Java等价物:
Map<String,String> configuration = EmbeddedGraphDatabase.loadConfigurations( "neo4j_config.props" );
GraphDatabaseService graphDb = new EmbeddedGraphDatabase( "data/neo4j-db", configuration );
Run Code Online (Sandbox Code Playgroud)
谢谢
ska*_*man 33
像这样的东西:
<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>
Run Code Online (Sandbox Code Playgroud)
这利用了使用任意静态工厂方法创建bean的能力,在这种情况下使用loadConfigurations()
工厂方法来创建configuration
bean,然后将其注入到正确的构造函数中EmbeddedGraphDatabase
.
创建一个加载属性的bean(并将文件名作为参数)并注入它.
编辑使用注释时,构造函数注入之类的东西变得更简单:
@Bean
public Map<String,String> configuration() {
return EmbeddedGraphDatabase.loadConfigurations( "neo4j_config.props" );
}
@Bean
public GraphDatabaseService graphDb() {
return new EmbeddedGraphDatabase( "data/neo4j-db", configuration() );
}
Run Code Online (Sandbox Code Playgroud)
请注意,第二个bean定义方法"简单地"调用第一个.当执行此代码时,Spring会做一些魔术,所以你仍然可以在别处覆盖bean(即bean仍然会相互覆盖),并且它将确保方法体只执行一次(无论多久和从哪里开始)被称为).
如果配置在不同的@Configuration
类中,那么你可以@Autowired
:
@Autowired
private Map<String,String> configuration;
@Bean
public GraphDatabaseService graphDb() {
return new EmbeddedGraphDatabase( "data/neo4j-db", configuration );
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67320 次 |
最近记录: |