Был найден метод setWrappedInstance
в org.springframework.beans.BeanWrapper
в 2.5.6 и удален в 3.0.0. Поскольку я в процессе миграции моего проекта с 2,5 до 3,0, я получаю ошибки. Я исследовал, и класс реализации org.springframework.beans.BeanWrapperImpl
по-прежнему имеет метод setWrappedInstance
.Переход от весны 2.5 к весне 3.0.5
Ниже приведен фрагмент кода моего проекта, который вызывает проблемы.
public FieldComparator(String fieldName, Class clazz) {
_fieldName = fieldName;
_bw = new BeanWrapperImpl(clazz);
}
public int compare(Object o1, Object o2) {
if (o1 == null && o2 == null) return 0;
else if (o1 == null) return -1;
else if (o2 == null) return 1;
// otherwise
_bw.setWrappedInstance(o1);
Comparable v1 = (Comparable) _bw.getPropertyValue(_fieldName);
_bw.setWrappedInstance(o2);
Comparable v2 = (Comparable) _bw.getPropertyValue(_fieldName);
return NullsLowComparator.INSTANCE.compare(v1, v2);
}
Так было бы хорошо, если я просто заменить _bw
реализацию с BeanWrapperImpl
. Я нахожусь в стадии обучения, и я считаю, что весна настоятельно предлагает использовать интерфейсы, а не сами классы реализации.
Является ли это изменение стандартными методами или я могу просто перейти к простому изменению?
+1 для хорошего объяснения. Я бы предпочел использовать PropertyAccessorFactory, как это было предложено javadoc. Ваш ответ был бы совершенным, если бы он упомянул об этом. Если вы его отредактируете, я удалю мою. –