G
Guest
Gast
Hallo,
gibt es irgendeine Annotation für Bean-Properties, um diese transient zu setzen?
Ich meine jetzt nicht Enterprise Java Beans, sondern die stinknormalen Bohnen
auf dem Client.
Leider wird der Modifier 'transient' aus der Reflection API bei Beans nicht berücksichtigt,
so dass man immer "von Aussen" über Introspection die entsprechenden Properties
transient setzen muss.
z.B.
oder sogar direkt in der Bean
Es ist irgendwie nicht so schön im Code.
Sowas würde mir besser gefallen, bedeutet aber auch, dass man trotzdem noch von Aussen die
transienten Felder durchgehen müsste. (wie oben, nur mit Annotation-Prüfung)
Irgendwelche Vorschläge?
gibt es irgendeine Annotation für Bean-Properties, um diese transient zu setzen?
Ich meine jetzt nicht Enterprise Java Beans, sondern die stinknormalen Bohnen
auf dem Client.
Leider wird der Modifier 'transient' aus der Reflection API bei Beans nicht berücksichtigt,
so dass man immer "von Aussen" über Introspection die entsprechenden Properties
transient setzen muss.
z.B.
Code:
// Irgendwo in einer Hilfsklasse
public static void setTransient(Class beanClass, String propertyName) throws IntrospectionException {
BeanInfo beanInfo = Introspector.getBeanInfo(beanClass);
for(PropertyDescriptor descriptor : eanInfo.getPropertyDescriptors()) {
if(descriptor.getName().equals(propertyName)) {
descriptor.setValue("transient", Boolean.TRUE);
break;
}
}
}
// Dann in Beans
class Bohne {
...
public String getName() {
return this.name;
}
}
// Und das 'transient'-Setzen
try {
Hilfsklasse.setTransient(Bohne.class, "name");
}
catch(IntrospectionException e) {
...
}
Code:
// Dann in Beans
class Bohne {
static {
try {
Hilfsklasse.setTransient(Bohne.class, "name");
}
catch(IntrospectionException e) {
...
}
}
...
public String getName() {
return this.name;
}
}
Es ist irgendwie nicht so schön im Code.
Sowas würde mir besser gefallen, bedeutet aber auch, dass man trotzdem noch von Aussen die
transienten Felder durchgehen müsste. (wie oben, nur mit Annotation-Prüfung)
Code:
@Bean(....)
class Bohne
{
...
@Transient
public String getName() {
return this.name;
}
}
Irgendwelche Vorschläge?