Tengo un tipo de enumeración independiente definido, algo como esto:
package my.pkg.types;
public enum MyEnumType {
TYPE1,
TYPE2
}
Ahora, quiero inyectar un valor de ese tipo en una propiedad de bean:
<bean name="someName" class="my.pkg.classes">
<property name="type" value="my.pkg.types.MyEnumType.TYPE1" />
</bean>
... y eso no funcionó :(
¿Cómo debo inyectar un Enum en un frijol de primavera?
Utilice el elemento secundario value en lugar del atributo value y especifique el nombre de la clase Enum:
La ventaja de este enfoque sobre la simple escritura
value="ALIEN"
es que también funciona si Spring no puede inferir el tipo real de la enumeración de la propiedad (por ejemplo, el tipo declarado de la propiedad es una interfaz). Adaptado del comentario de Araqnid.fuente
Sé que esta es una pregunta muy antigua, pero en caso de que alguien esté buscando la forma más nueva de hacer esto, use el espacio de nombres spring util:
Como se describe en la documentación de primavera .
fuente
Puedes simplemente hacer "TYPE1".
fuente
Esto es lo que hizo por mí MessageDeliveryMode es la enumeración que el bean tendrá el valor PERSISTENT:
fuente
Usando SPEL y P-NAMESPACE:
fuente
Para ser específico, establezca el valor para que sea el nombre de una constante del tipo de enumeración, por ejemplo, "TYPE1" o "TYPE2" en su caso, como se muestra a continuación. Y funcionará:
fuente
Puede escribir Bean Editors (los detalles están en Spring Docs) si desea agregar más valor y escribir en tipos personalizados.
fuente
Ejemplo de integración de Spring, enrutamiento basado en un campo Enum:
config:
fuente