我正在为我的开发人员编写一个关于Spring(3.0.x)的非常简单的教程,并且遇到了一个奇怪的行为:java.util.Locale类型的bean没有自动连接到其他bean,并且没有错误消息。但是,另一个bean被创建好了,只是字段为空。
详细信息:
Bean定义如下:
<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"/>
未使用自动装配定制。
类别:
包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());
}
}
有什么想法吗?
提前致谢。
答案 0 :(得分:1)
两个关键文档片段:
参考手册第3.4.5.1节:
您无法自动装配所谓的简单属性,例如基元,字符串和类(以及此类简单属性的数组)。这种限制是按设计的
来自org.springframework.beans.BeanUtils#isSimpleProperty()javadoc:
检查给定类型是否表示“简单”属性:基元,字符串或其他CharSequence,数字,日期,URI,URL,区域设置,类或相应的数组。检查是否给定类型表示“简单”属性:基元,字符串或其他CharSequence,数字,日期,URI,URL, 区域设置 ,类,或相应的数组。
所以,按设计工作。