Como faço para criar um spring bean para uma primitiva dupla Java?
Pergunta
Eu gostaria de criar um feijão primavera que tenha o valor de um duplo.Algo como:
<bean id="doubleValue" value="3.7"/>
Solução
Declare assim:
<bean id="doubleValue" class="java.lang.Double">
<constructor-arg index="0" value="3.7"/>
</bean>
E use assim:
<bean id="someOtherBean" ...>
<property name="value" ref="doubleValue"/>
</bean>
Outras dicas
Também é importante notar que dependendo da sua necessidade definir seu próprio bean pode não ser a melhor aposta para você.
<util:constant static-field="org.example.Constants.FOO"/>
é uma boa maneira de acessar um valor constante armazenado em uma classe e os fichários padrão também funcionam muito bem para conversões, por exemplo.
<bean class="Foo" p:doubleValue="123.00"/>
Acabei substituindo muitos dos meus beans dessa maneira, juntamente com um arquivo de propriedades que define meus valores (para fins de reutilização).O que costumava ser assim
<bean id="d1" class="java.lang.Double">
<constructor-arg value="3.7"/>
</bean>
<bean id="foo" class="Foo">
<property name="doubleVal" ref="d1"/>
</bean>
é refatorado para isso:
<bean
id="propertyFile"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:my.properties"
/>
<bean id="foo" class="Foo" p:doubleVal="${d1}"/>
Por que você simplesmente não usa um Dobro?qualquer razão?
Primavera 2.5+
Você pode definir o bean assim na configuração Java:
@Configuration
public class BeanConfig {
@Bean
public Double doubleBean(){
return new Double(3.7);
}
}
Você pode usar este bean assim em seu programa:
@Autowired
Double doubleBean;
public void printDouble(){
System.out.println(doubleBean); //sample usage
}