¿Cómo creo un Spring Bean para una doble primitiva de Java?
Pregunta
Me gustaría crear un Spring Bean que tenga el valor de un doble.Algo como:
<bean id="doubleValue" value="3.7"/>
Solución
Declararlo así:
<bean id="doubleValue" class="java.lang.Double">
<constructor-arg index="0" value="3.7"/>
</bean>
Y úsalo así:
<bean id="someOtherBean" ...>
<property name="value" ref="doubleValue"/>
</bean>
Otros consejos
También vale la pena señalar que, dependiendo de sus necesidades, definir su propio frijol puede no ser la mejor opción para usted.
<util:constant static-field="org.example.Constants.FOO"/>
es una buena manera de acceder a un valor constante almacenado en una clase y las carpetas predeterminadas también funcionan muy bien para conversiones, p.
<bean class="Foo" p:doubleValue="123.00"/>
Me encontré reemplazando muchos de mis beans de esta manera, junto con un archivo de propiedades que define mis valores (para fines de reutilización).Lo que solía verse así
<bean id="d1" class="java.lang.Double">
<constructor-arg value="3.7"/>
</bean>
<bean id="foo" class="Foo">
<property name="doubleVal" ref="d1"/>
</bean>
se refactoriza en esto:
<bean
id="propertyFile"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:my.properties"
/>
<bean id="foo" class="Foo" p:doubleVal="${d1}"/>
¿Por qué no usas simplemente un Doble?¿cualquier razón?
Primavera 2.5+
Puedes definir un bean como este en la configuración de Java:
@Configuration
public class BeanConfig {
@Bean
public Double doubleBean(){
return new Double(3.7);
}
}
Puedes usar este bean así en tu programa:
@Autowired
Double doubleBean;
public void printDouble(){
System.out.println(doubleBean); //sample usage
}