java - 在 Spring XML 中声明整数、 double 、 float 、字符串等

标签 java spring

有时,Spring 无法确定“值”应该是什么类型。当属性或构造函数是“java.lang.Object”类型时会发生这种情况。在这些情况下,Spring 默认为“java.lang.String”。有时这不是正确的选择,例如在使用时:

<jee:jndi-lookup id="test" jndi-name="java:comp/env/test" 
   default-value="10" expected-type="java.lang.Integer"/>

如果查找失败并且必须回退到默认值,则存在类型不匹配。因此,需要这样做:

  <bean id="test" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/test" />
    <property name="defaultObject">
      <bean class="java.lang.Integer">
        <constructor-arg value="10" />
      </bean>
    </property>
  </bean>

这有点冗长,特别是如果它们很多的话。有没有一些方便的方法来声明一个 Integer/Long/Double/Float/String 文字而不必使用这种格式:

      <bean class="java.lang.Integer">
        <constructor-arg value="10" />
      </bean>

最佳答案

从 Spring 3.0 开始,您可以使用 Spring 表达式语言:#{new Integer(10)}

<jee:jndi-lookup id="test" jndi-name="java:comp/env/test" 
    default-value="#{new Integer(10)}" expected-type="java.lang.Integer"/>

关于java - 在 Spring XML 中声明整数、 double 、 float 、字符串等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119057/

相关文章:

java - MongoDB - Spring - 保存对象导致 StackOverflowError

java - 如何设置 Spring Boot 以运行 HTTPS/HTTP 端口

java - 如何保护用户角色的 Spring Controller 方法?

java - 除了 xml 之外,还向 Web 浏览器提供 xsl

java - 相互递归定义的静态字段导致程序卡住但不是没有线程而不是 gcj?

java - 为什么可以将 null 传递给重载的 Java 方法?

java - @ServerEndpoint 和@Autowired

java - 警告 - 类是原始类型。对泛型类型 Class<T> 的引用应该参数化

java - 无法解决 OSGI 服务组件依赖性

java - hibernate , Spring 。同一实体的多个表示正在合并