usar una sintaxis requiere qué que página para mvc funcione form example etiquetas ejemplo docs correctamente como bean spring properties

spring - una - Aplicar propiedades dinámicas a un bean en tiempo de ejecución



qué se requiere para que una página jsf funcione correctamente (3)

Supongamos que tengo un Bean DialogBox, con propiedades de alto y ancho:

public class DialogBox { int x; int y; ... }

En mi applicationContext.xml definiría propiedades como valores predeterminados razonables:

<bean id="dialogbox" class="DialogBox"> <property name="x" value="100"/> <property name="y" value="100"/> </bean>

Tenemos varios clientes que usan el bean dialogBox, y cada uno quiere un valor personalizado para xey. Una de las rutas que hemos discutido es tener varios archivos de propiedades, uno para cada cliente, y tener el mapa de identificación del cliente en el archivo correcto, por ejemplo, el cliente 123 se mapeará a dialogbox_123.properties:

dialogbox_123.properties: x=200 y=400

Luego, en el tiempo de ejecución cuando se solicita el bean, la primavera buscará si existe un archivo de propiedades personalizadas para el cliente y usará esas propiedades; de lo contrario, use los valores predeterminados. Soy consciente del PropertyOverrideConfigurer, pero AFAIK solo funciona cuando se inicia el contexto, por lo que no funcionará para nuestros propósitos. ¿Hay alguna instalación existente en primavera para lograr esto, o alguien puede recomendar otra manera?


  1. Use FactoryBean (como ya se sugirió) para personalizar la creación de instancias.
  2. set scope="prototype" en el bean, de modo que cada vez que se requiera una instancia, se cree una nueva.
  3. En caso de que quiera inyectar el prototype frijol en un frijol singleton , use lookup-method búsqueda ( busque aquí el método de búsqueda )

Sin embargo, no estoy seguro si esto encajaría en su caso. Otra sugerencia sería:

En los métodos de @PostConstruct de sus varios "clientes" establezca las propiedades como desee en la ventana de diálogo ya inyectada. Me gusta:

public class MyDialogClient { @Autowired private Dialog dialog; @PostConstruct public void init() { dialog.setWidth(150); //or read from properties file dialog.setHeight(200); } ... }

De nuevo, en este caso, puedes jugar con el scope atrribute.


Si entendí la pregunta, puede usar FactoryBean para personalizar la lógica de creación de bean en Spring.


Eche un vistazo a los servicios de Spring OSGi Compendium , tienen un administrador de propiedades llamado "managed-properties", que le permite no solo actualizar las propiedades en tiempo de ejecución, sino también mientras la aplicación se está ejecutando si selecciona el "contenedor-managed". "estrategia de actualización.