Reputation: 21961
Hey, what is the best way to set a bean's property with Class value ? Regarding XML configuration. For a bean like this :
public class FilterJsonView extends MappingJacksonJsonView {
private Set<String> filteredAttributes;
private Class clazz;
public Set<String> getFilteredAttributes() {
return filteredAttributes;
}
public void setFilteredAttributes(Set<String> filteredAttributes) {
this.filteredAttributes = filteredAttributes;
}
public Class getClazz() {
return clazz;
}
public void setClazz(Class clazz) {
this.clazz = clazz;
}
}
Upvotes: 20
Views: 35733
Reputation: 403441
Just inject the class name, and Spring will convert it to a Class
object for you, e.g.
<bean class="com.x.y.FilterJsonView">
<property name="clazz" value="com.x.y.SomeClass"/>
</bean>
Upvotes: 32
Reputation: 28638
Just supply the class name. Say you want clazz
to be String.class
:
<bean id="beanId" class="FilterJsonView">
<property name="clazz" value="java.lang.String"/>
</bean>
Spring has a PropertyEditorSupport
implementation called ClassEditor
that handles the conversions.
Upvotes: 9