Spring XML配置 - 如何定义Instant,BigDecimal,...参数?

时间:2015-07-25 14:17:47

标签: java spring

如何指定不是原始值的构造函数参数(或类似String的简单类型),但仍然是XML配置文件中Java库的类部分?

到目前为止,XML对于简单的值也适用,例如

<bean id="foo" class="app.model.provider.IFoo">
    <constructor-arg name="bar" value="baz"/>
</bean>

如何定义需要的依赖项,例如构造函数中的java.time.Instant实例?

1 个答案:

答案 0 :(得分:1)

Spring允许您使用factory methods来获取实例。

假设你想做相同的

Instant.now();

你会用

<bean id="anInstant" class="java.time.Instant" factory-method="now"/>

如果你想做

Instant.parse("2015-07-24T17:10:00Z")

你会用

<bean id="anInstant" class="java.time.Instant" factory-method="parse">
    <constructor-arg value="2015-07-24T17:10:00Z" />
</bean>

但是,我不会创建可访问的Instant bean。如果需要将它们传递给其他bean的构造函数,请直接提供它们,不带名称

<bean id="example" class="com.example.Example">
    <constructor-arg name="startTime">
        <bean class="java.time.Instant" factory-method="parse">
            <constructor-arg value="2015-07-24T17:10:00Z" />
        </bean>
    </constructor-arg>
</bean>