我有一个简单的java类,如下所示:
public class foo
{
private static String dateFormat;
private static String otherStaticField;
....
}
匹配的spring bean定义,xml格式,如下所示:
<bean id="foo" class="bar.foo" scope="prototype" />
我想要的是一种使用值设置静态字段的简单方法。
解决方案有效但不完全符合我的要求:
坏:
简单的属性定义,如下所示:
<bean id="foo" class="bar.foo" scope="prototype">
<property name="dateFormat" value="someValue" />
<property name="otherStaticField" value="someOtherValue" />
...
</bean>
显然这对原型bean来说是一个糟糕的解决方案,因为它会在每次创建实例时设置静态值。
丑陋的:
使用&#39; MethodInvokingBean&#39; bean设置一次每个值,如下所示:
<bean id="foo" class="bar.foo" scope="prototype" />
<bean class="org.springframework.beans.factory.config.MethodInvokingBean">
<property name="targetClass" value="bar.foo" />
<property name="targetMethod" value="setDateFormat" />
<property name="arguments">
<list>
<value>someValue</value>
</list>
</property>
</bean>
<bean class="org.springframework.beans.factory.config.MethodInvokingBean">
<property name="targetClass" value="bar.foo" />
<property name="targetMethod" value="setOtherStaticField" />
<property name="arguments">
<list>
<value>someOtherValue</value>
</list>
</property>
</bean>
...
好处:?
* 小的设计考虑因素:我坚持在bean配置文件(Beans.xml)上实现它,因为我希望能够在整个中添加和删除这个bean一个地方。这就是为什么我不想在代码中单独设置这些静态字段的原因。