Une note de ce qui s'est passé lors de l'utilisation de Apache Commons BeanUtils
Bean.java
public class Bean {
private Timestamp timestamp;
public Timestamp getTimestamp() {
return timestamp;
}
public void setTimestamp(Timestamp timestamp) {
this.timestamp = timestamp;
}
}
Main.java
public class Main {
public static void main(String[] args) throws Exception {
Bean bean = new Bean();
// 1.9.Avant 3, objet.getClass()Est interprété comme un accesseur"class"Est inclus dans la liste des propriétés.
BeanUtils.describe(bean);
// => 1.9.Avant 3:{class=class test.Bean, timestamp=null}
// 1.9.4:{timestamp=null}
// ※ PropertyUtils.describe(bean)Donnera le même résultat.
// 1.9.Avant 3, le comportement lors de la définition de propriétés inaccessibles avec setProperty et copyProperty est différent.
BeanUtils.setProperty(bean, "class", Bean.class);
// =>Rien n'est fait.
BeanUtils.copyProperty(bean, "class", Bean.class);
// => 1.9.Avant 3: java.lang.reflect.InvocationTargetException:Impossible de définir la classe.
// 1.9.4: Rien n'est exécuté.(BEANUTILS-Le comportement a-t-il changé en raison de l'influence de 520? )
//Le comportement lors de la tentative de définition de null pour certains types de propriétés est différent entre setProperty et copyProperty.
BeanUtils.setProperty(bean, "timestamp", null);
// => org.apache.commons.beanutils.ConversionException: No value specified for 'java.sql.Timestamp'Se produit.
BeanUtils.copyProperty(bean, "timestamp", null);
// => 1.8.Avant 3: une exception ConversionException s'est produite comme copyProperty.
// 1.9.Après 0: rien n'est exécuté.(BEANUTILS-Fixé dans 454)
}
}