【问题标题】:How does @Value work in SpEL?@Value 在 SpEL 中如何工作?
【发布时间】:2013-11-02 13:59:15
【问题描述】:

我有一个带有@Value 注释的日期字段的 A 类,以将当前日期作为默认值。

当我在 XML 文件中创建一个 bean 时,这个字段似乎是用当前日期初始化的,正如预期的那样。

当我在测试类的 main 中使用 new A() 创建一个新对象时,该字段为空。

我的问题是@Value 是如何工作的。在文档中,它说它为字段提供了默认值,但它是否仅适用于 bean?它是如何处理的?

【问题讨论】:

  • 是的,只有 Spring 托管的 bean 会被注入 @Value 注释字段的值。

标签: java spring annotations spring-el


【解决方案1】:

使用 XML 文件创建 bean 时,Spring 创建 bean 并应用配置字段的注入,通过 XML 配置或通过注解装饰,例如@Autowired@Value等……

当使用 new YourClass 创建 bean 时,您是在手动创建类的实例,因此 Spring 不会处理。

如果您希望 Spring 处理按需创建的新 bean,即使用 new 关键字,您可以参考 Spring injecting or autowiring datasource bean to class,第 3 点以及底部使用 @Configurable 的说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2013-09-03
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多