当前位置: 首页 > 面试题库 >

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

帅彦
2023-03-14
问题内容

我如何使用该字段注入包含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 );

谢谢


问题答案:

像这样:

<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



 类似资料:
  • 我们在代码库中有一个处理程序类的层次结构,它们实现了一种责任链原则。有一个抽象父类,它由几个子类扩展,这些子类也在其构造函数中接收抽象 我们现在需要将具体子类之一的实例注入到新实现的服务类中,我们应该用XML来配置它。我们可以为抽象父类配置一个抽象bean,但这个bean似乎不被允许用作具体子bean的构造函数-arg 有什么办法可以克服这一点吗?处理程序类层次结构是遗留代码,我们现在无法修改它们

  • 可以反序列化到具有私有字段和自定义参数构造函数的类,而无需使用注释,也无需使用Jackson? 我知道在Jackson中使用这种组合是可能的:1)Java 8,2)使用“-parameters”选项编译,3)参数名称与JSON匹配。但在GSON中,默认情况下也可以不受所有这些限制。 例如: 这对GSON来说很好,但Jackson提出: 这在GSON中是可能的,所以我认为Jackson中一定有某种方

  • 问题内容: 我在作业上碰壁,一直在梳理网站以寻求任何有用的信息(出现空白)。我需要创建一个类,在该类中创建一个构造函数,然后再创建一个子类以扩展超类。然后,我需要使用main方法创建一个新文件来演示这两种情况。从概念上来说没问题。 我的问题是:如何使用构造函数初始化对象,但需要用户输入? 现在我得到的错误是:“类CarRental中的构造函数CarRental无法应用于给定类型;必需:String

  • 这里有一个关于我要做的事情的参考...访问JavaFX TableView ObservableRayList中的子类属性 但是仅仅使用示例代码,我基本上重写了2个方法,每个3次...在实际的程序中还有更多的东西。(再多一点点)

  • 你知道我如何使用FireStore填充文档上的引用字段吗?

  • 问题内容: Oracle Java教程站点的这一段使我感到困惑: 所有类都有至少一个构造函数。如果一个类未显式声明任何类,则Java编译器会自动提供一个无参数的构造函数,称为默认构造函数。此默认构造函数调用类父级的无参数构造函数,如果该类没有其他父级,则调用Object构造函数。如果父级没有构造函数(对象确实有一个构造函数),则编译器将拒绝该程序。 如果所有对象都直接或间接继承自Object,那么