У меня есть веб-проект, где BeanUtils
используется для манипуляции бобами.Реестр преобразователей в BeanUtils thread-local?
В моем коде, для того, чтобы сделать BeanUtils
передачи строк записей в java.util.Date
полях правильно, DateConverter
зарегистрирован в ConvertUtils
класс так:
ConvertUtils.register(dateConverter, Date.class);
Кроме того, в моем проекте, различные форматы даты необходимы в различные действия, поэтому я зарегистрировал различные преобразователи в различных действиях, таких как, что:
public void Action1(){
DateTimeConverter dtConverter = new DateConverter();
dtConverter.setPatterns(dateFormats1);
ConvertUtils.register(dtConverter, Date.class);
...
BeanUtils.populate(myBean1, hashMap1);
}
public void Action2(){
DateTimeConverter dtConverter = new DateConverter();
dtConverter.setPatterns(dateFormats2);
ConvertUtils.register(dtConverter, Date.class);
...
BeanUtils.populate(myBean2, hashMap2);
}
Но позже я заметил, что зарегистрированный конвертер с одной целью класс (Date
здесь) заменит друг друга. Так что если операция ConvertUtils.register
не является локальной, проблемы, вызванные совпадением, могут произойти здесь, даже через мой веб-сайт еще не встретился.
Итак, будет ли конвертер зарегистрирован в одном потоке заменить конвертер, зарегистрированный в другом потоке? Если да, есть ли какая-нибудь работа для моих обстоятельств?
Ну, в коде все еще есть небольшая проблема, строка 6 должна быть 'beanUtils .getyConvertUtils(). Register (...)' to work –
Но 'convertUtils' является результатом' beanUtils.getConvertUtils() '. Я что-то пропустил? –
О, извините, вы правы, я пропустил эту модификацию –