Come posso creare uno spring bean per una doppia primitiva Java?
Domanda
Mi piacerebbe creare un fagiolino primaverile che abbia il valore di un doppio.Qualcosa di simile a:
<bean id="doubleValue" value="3.7"/>
Soluzione
Dichiararlo così:
<bean id="doubleValue" class="java.lang.Double">
<constructor-arg index="0" value="3.7"/>
</bean>
E usa in questo modo:
<bean id="someOtherBean" ...>
<property name="value" ref="doubleValue"/>
</bean>
Altri suggerimenti
Vale anche la pena notare che, a seconda delle tue esigenze, definire il tuo bean potrebbe non essere la soluzione migliore per te.
<util:constant static-field="org.example.Constants.FOO"/>
è un buon modo per accedere a un valore costante memorizzato in una classe e anche i raccoglitori predefiniti funzionano molto bene per le conversioni, ad es.
<bean class="Foo" p:doubleValue="123.00"/>
Mi sono ritrovato a sostituire molti dei miei bean in questo modo, insieme a un file delle proprietà che definisce i miei valori (a scopo di riutilizzo).Quello che prima assomigliava a questo
<bean id="d1" class="java.lang.Double">
<constructor-arg value="3.7"/>
</bean>
<bean id="foo" class="Foo">
<property name="doubleVal" ref="d1"/>
</bean>
viene rifattorizzato in questo:
<bean
id="propertyFile"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:my.properties"
/>
<bean id="foo" class="Foo" p:doubleVal="${d1}"/>
Perché non usi semplicemente a Doppio?qualche ragione?
Primavera 2.5+
Puoi definire il bean in questo modo nella configurazione Java:
@Configuration
public class BeanConfig {
@Bean
public Double doubleBean(){
return new Double(3.7);
}
}
Puoi usare questo bean in questo modo nel tuo programma:
@Autowired
Double doubleBean;
public void printDouble(){
System.out.println(doubleBean); //sample usage
}