我想在Spring XML配置文件中定义默认属性值.我想要这个默认值null
.
像这样的东西:
...
<ctx:property-placeholder location="file://${configuration.location}"
ignore-unresolvable="true" order="2"
properties-ref="defaultConfiguration"/>
<util:properties id="defaultConfiguration">
<prop key="email.username" >
<null />
</prop>
<prop key="email.password">
<null />
</prop>
</util:properties>
...
Run Code Online (Sandbox Code Playgroud)
这不起作用.甚至可以null
在Spring XML配置中定义属性的默认值吗?
使用Spring时,只有在传递的值不为null时才可以设置属性吗?
例:
<bean name="myBean" class="some.Type">
<property name="abc" value="${some.param}"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
我正在寻找的行为是:
some.Type myBean = new some.Type();
if (${some.param} != null) myBean.setAbc(${some.param});
Run Code Online (Sandbox Code Playgroud)
我需要这个的原因是因为abc
有一个默认值,我不想用a覆盖null
.我正在创建的Bean不在我的源代码控制之下 - 所以我无法改变它的行为.(另外,abc
为此目的可能是原始的,所以无论如何我都不能用null设置它.
编辑:
根据答案,我认为我的问题需要澄清.
我有bean我需要实例化并传递给我使用的第三方.这个bean拥有各类(的许多特性(目前12) ,,int
等),
每个属性都有一个默认值-我不知道它是什么,宁愿不需要知道,除非它成为一个问题.我正在寻找的是一个来自Spring的能力的通用解决方案 - 目前我唯一的解决方案是基于反射.boolean
String
组态
<bean id="myBean" class="some.TypeWrapper">
<property name="properties">
<map>
<entry key="abc" value="${some.value}"/>
<entry key="xyz" value="${some.other.value}"/>
...
</map>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
码
public class TypeWrapper
{
private Type innerBean;
public TypeWrapper()
{
this.innerBean = new Type();
}
public void setProperties(Map<String,String> properties)
{
if (properties …
Run Code Online (Sandbox Code Playgroud) 我试过用
@Value("#{'${white.listed.hotel.ids}'.split(',')}")
private Set<String> fareAlertwhiteListedHotelIds;
Run Code Online (Sandbox Code Playgroud)
但是当white.listed.hotel.ids为空时,还设置了一个带空白值的大小.
white.listed.hotel.ids =
有人请帮我一个版本,其中whiteListedHotelIds可以包含属性文件中指定的值或没有空白案例的项目.