Java
public class MyObject{}
public class MyFactory{
private Optional<MyObject> myproperty;
public Optional<MyObject> getMyproperty{...}
public void setMyproperty{...}
}
Spring config xml(没有工作)
<bean id="myproperty" class="java.util.Optional">
<constructor-arg>
<value>com.MyObject</value>
</constructor-arg>
</bean>
<bean id="myfactory" class="com.Myfactory">
<property name="myproperty" ref="myproperty" />
</bean>
spring支持泛型bean吗?
使用Optional的原因是它提供了一些有用的功能,例如检查值是否为null。您可以在一行代码中完成检查和进一步操作。
getMyproperty().ifPresent(id -> call.setId(id));
答案 0 :(得分:2)
似乎问题与泛型无关。
您只需要正确告诉Spring使用工厂方法创建bean,因为Optional
只能通过工厂方法创建。类似的东西:
<bean id="myproperty" class="java.util.Optional" factory-method="of">
<constructor-arg type="java.lang.Object" value="com.MyObject" />
</bean>
它应该意味着myproperty
创建Optional.of(com.MyObject.class)
bean(如果那是您要使用的那个,请将factory-method
更改为ofNullable
)
答案 1 :(得分:0)
另一个选择是使用SpEL( S pring E xpression L anguage):
<bean id="mybean" ...>
<property name="optProp" value="#{ T(java.util.Optional).of( @wrapme) }"/>
</bean>
其中“wrapme”是您要在java.util.Optional
中包装的其他地方定义的bean的名称。