相关疑难解决方法(0)

Spring - 仅当值不为null时才设置属性

使用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的能力的通用解决方案 - 目前我唯一的解决方案是基于反射.booleanString

组态

<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)

java spring javabeans

23
推荐指数
3
解决办法
4万
查看次数

可选的Spring bean引用

在我的应用程序中,我使用ContextLoaderListener从许多jar加载上下文文件:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/contextBeans.xml</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

这意味着我可以在不进行导入的情况下从其他jar中引用bean.

在应用程序中有多个部署选项,在某些部署中可以排除jar.为了支持我,我希望一些bean引用是可选的.例如:

<bean id="mainAppBean" class="com.someapp.MyApplication">
    <constructor-arg index="0" ref="localBean"/>
     <constructor-arg index="1" ref="optionalBeanReference1"/>
    <constructor-arg index="2" ref="optionalBeanReference2"/>
 </bean>
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想如果找不到引用,则optionalBeanReference1等于null(以某种方式将其标记为可选)

这可以在Spring完成吗?或者您推荐哪种方法来处理动态参考?

java spring

20
推荐指数
5
解决办法
3万
查看次数

标签 统计

java ×2

spring ×2

javabeans ×1