【问题标题】:Converting Boolean bean creation to boolean using Spring使用 Spring 将布尔 bean 创建转换为布尔值
【发布时间】:2010-11-22 17:06:15
【问题描述】:

所以,我的一个 java 文件中有这样的内容:

@Resource(name = "initializationCache")
Boolean initializationCache;

在配置文件中,我有这个:

<bean id="initializationCache" class="java.lang.Boolean">
    <constructor-arg value="${initialization.cache}" />
</bean>

我将如何使用原始布尔值来完成这项工作?

【问题讨论】:

  • 基本上就是这样,自动装箱会将Boolean拆箱到boolean
  • 但是如果由于某种原因配置没有被正确拉入,我更愿意让initializationCache默认为false。就像现在一样,我相信它将为空。
  • 如果您只是将 Java 代码中的 Boolean 更改为 boolean 会发生什么?
  • @Grzegorz 我明白了: 原因:org.springframework.beans.factory.BeanNotOfRequiredTypeException:名为“initializationCache”的 Bean 必须是 [boolean] 类型,但实际上是 [java.lang.布尔]

标签: java spring dependency-injection boolean


【解决方案1】:

在 Spring 3 中,您可以使用 @Value 无需中间 bean:

@Value("${initialization.cache}")
boolean initializationCache;

【讨论】:

  • 有没有办法不去Spring 3?
  • 谢谢。我投了赞成票,因为如果我在 3.0+ 上,这将是一个很好的答案。
【解决方案2】:

我想一种方法是声明一个Boolean 类型的setter,并让它将值分配给boolean 类型的字段,即

boolean initializationCache;

@Resource(name = "initializationCache")
public void setInitializationCache(Boolean b) {
  this.initializationCache = b;
}

我还没有测试过。

【讨论】:

  • 是的,这可以工作,虽然我想做一个空检查,我想。我实际上找到了一个更具体到我的特定应用程序的不同解决方案,但这个答案似乎可能是 pre 3.0 Spring 的最佳方法。
猜你喜欢
  • 1970-01-01
  • 2019-04-07
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 2021-06-27
  • 2016-04-27
相关资源
最近更新 更多