Spring:自动装配 java.util.Locale 类型的 bean 似乎不起作用
我正在为我的开发人员同事编写一个关于 Spring (3.0.x) 的非常简单的教程,并且遇到了一个奇怪的行为:java.util.Locale 类型的 bean 没有自动装配到其他 bean 中,并且没有错误消息。但仍然可以正常创建另一个 bean,只是该字段为空。
详细信息:
- 配置完全基于 XML。
Bean定义如下:
<构造函数值=“es”/> <构造函数值=“ES”/> ; 未使用自动装配定制。
类:
包com.bsl.training.theclock;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class SimpleDateTimeBean3 {
private Locale locale;
public SimpleDateTimeBean3() {
}
public void setLocale(final Locale loc) {
locale = loc;
}
public Locale getLocale() {
return locale;
}
public String getDateTime() {
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale);
return df.format(new Date());
}
}
- 如果我向 SimpleDateTimeBean3 类添加一个字段(该类型是我自己的类之一并且存在这样的 bean),那么一切都会完美运行。
- 不会打印任何错误,两个 bean(spanishLocale、dateTimeBeanSetter)均已创建并可从 ApplicationContext 访问,但在“dateTimeBeanSetter”bean 上调用 getDateTime() 会给出 NPE。
有什么想法吗?
提前致谢。
I am writing a very simple tutorial about Spring (3.0.x) for my fellow developers and have encountered a weird behaviour: bean of type java.util.Locale is not autowired into other bean and there is no error message. But still, the other bean gets created ok, just the field is null.
To the details:
- Configuration is purely XML based.
Bean definitions are as follows:
<bean id="spanishLocale" class="java.util.Locale"> <constructor-arg value="es"/> <constructor-arg value="ES"/> </bean> <bean id="dateTimeBeanSetter" class="com.bsl.training.theclock.SimpleDateTimeBean3" autowire="byType"/>
No autowire customisation has been used.
Class:
package com.bsl.training.theclock;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class SimpleDateTimeBean3 {
private Locale locale;
public SimpleDateTimeBean3() {
}
public void setLocale(final Locale loc) {
locale = loc;
}
public Locale getLocale() {
return locale;
}
public String getDateTime() {
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale);
return df.format(new Date());
}
}
- If I add a field to the SimpleDateTimeBean3 class, which type is one of my own classes and such bean exists, everything works perfectly.
- No errors are printed, both beans (spanishLocale, dateTimeBeanSetter) are created and accessible from ApplicationContext, but calling getDateTime() on the 'dateTimeBeanSetter' bean gives a NPE.
Any ideas?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
两个关键文档片段:
来自参考手册第 3.4.5.1 节:
使然,来自 org.springframework.beans.BeanUtils#isSimpleProperty() javadoc:
所以,按设计工作。
Two key documentation fragments:
From reference manual section 3.4.5.1:
And from org.springframework.beans.BeanUtils#isSimpleProperty() javadoc:
So, Working As Designed.