Comment créer un bean Spring pour une double primitive Java ?
Question
J'aimerais créer un haricot printanier qui détient la valeur d'un double.Quelque chose comme:
<bean id="doubleValue" value="3.7"/>
La solution
Déclarez-le comme ceci :
<bean id="doubleValue" class="java.lang.Double">
<constructor-arg index="0" value="3.7"/>
</bean>
Et utilisez comme ceci :
<bean id="someOtherBean" ...>
<property name="value" ref="doubleValue"/>
</bean>
Autres conseils
Il convient également de noter que, selon vos besoins, définir votre propre bean n'est peut-être pas la meilleure solution pour vous.
<util:constant static-field="org.example.Constants.FOO"/>
est un bon moyen d'accéder à une valeur constante stockée dans une classe et les classeurs par défaut fonctionnent également très bien pour les conversions, par ex.
<bean class="Foo" p:doubleValue="123.00"/>
Je me suis retrouvé à remplacer plusieurs de mes beans de cette manière, associé à un fichier de propriétés définissant mes valeurs (à des fins de réutilisation).À quoi ressemblait ça
<bean id="d1" class="java.lang.Double">
<constructor-arg value="3.7"/>
</bean>
<bean id="foo" class="Foo">
<property name="doubleVal" ref="d1"/>
</bean>
est refactorisé en ceci :
<bean
id="propertyFile"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:my.properties"
/>
<bean id="foo" class="Foo" p:doubleVal="${d1}"/>
Pourquoi n'utilisez-vous pas simplement un Double?n'importe quelle raison?
Printemps 2.5+
Vous pouvez définir le bean comme ceci dans la configuration Java :
@Configuration
public class BeanConfig {
@Bean
public Double doubleBean(){
return new Double(3.7);
}
}
Vous pouvez utiliser ce bean comme ceci dans votre programme :
@Autowired
Double doubleBean;
public void printDouble(){
System.out.println(doubleBean); //sample usage
}