2011-07-11 7 views
16

tengo tres (A, B, C) context.xml primavera, A es para la configuración básica, B y C importar el A.definir una cadena en contexto resorte

En un grano en AI tiene:

 
<bean class="com.example.Ex"> 
    <property name="aString" value="${myString}" /> 
</bean> 

ahora Quiero definir la propiedad myString en el contexto B y C, ¿es posible hacerlo sin crear y carga dos archivos de propiedades diferentes?

Respuesta

49

Puede probar una forma alternativa declarando bean de tipo String, en lugar de tratar con Propiedades.

esta manera:

Un

<bean class="com.example.Ex"> 
    <property name="aString" ref="str" /> 
</bean> 

Y entonces se declara en su B y C contextos la referencia "str" ​​de esta manera:

B

<bean id="str" class="java.lang.String"> 
    <constructor-arg value="string_1"/> 
</bean> 

C

<bean id="str" class="java.lang.String"> 
    <constructor-arg value="string_2"/> 
</bean> 
+1

Es verdad ... la clase String tiene un constructor con una cadena ... No lo pienso ... ¡gracias! – rascio

+0

¿Cuál es la mejor manera de practicar? ¿y por qué? –

-7

Esto también es una de las maneras.

<bean id="str" class="com.example.Ex"> 
<constructor-arg type="java.lang.String" value="INDIA"/> 

+1

Esto no ayuda a resolver el problema de tener contextos B y C con valores diferentes para la cadena según lo decidido por el contexto A – Kieran

+0

, además, implica que hay un constructor para la clase Ex, que acepta una cadena como argumento. –

4

Para completar aquí otra manera de crear una cadena:

lugar de llamar al constructor de String que obliga a un nuevo objeto que se cree innecesaria que puede ser una idea mejor utilizar el valueOf método que aquí puede servir como un constructor "no hacer nada":

<bean id="str" class="java.lang.String" factory-method="valueOf"> 
    <constructor-arg value="string_1"/> 
</bean> 

Sin embargo esto es sólo académica como la sobrecarga de analizar los attri XML adicionales bute que hará que las cadenas se creen también puede ser mayor que la ganancia de rendimiento del valor de llamada Fromf en lugar del constructor.

Cuestiones relacionadas