Как создать Spring Bean для двойного примитива Java?
Вопрос
Я хотел бы создать Spring bean, который содержит значение double.Что-то вроде:
<bean id="doubleValue" value="3.7"/>
Решение
Объявите это так:
<bean id="doubleValue" class="java.lang.Double">
<constructor-arg index="0" value="3.7"/>
</bean>
И используйте так:
<bean id="someOtherBean" ...>
<property name="value" ref="doubleValue"/>
</bean>
Другие советы
Также стоит отметить, что в зависимости от ваших потребностей определение собственного bean-компонента может быть не лучшим выбором для вас.
<util:constant static-field="org.example.Constants.FOO"/>
это хороший способ получить доступ к постоянному значению, хранящемуся в классе, а привязки по умолчанию также очень хорошо работают для преобразований, например.
<bean class="Foo" p:doubleValue="123.00"/>
Я обнаружил, что заменяю многие из своих bean-компонентов таким образом вместе с файлом свойств, определяющим мои значения (для целей повторного использования).Что раньше выглядело так
<bean id="d1" class="java.lang.Double">
<constructor-arg value="3.7"/>
</bean>
<bean id="foo" class="Foo">
<property name="doubleVal" ref="d1"/>
</bean>
реорганизуется в это:
<bean
id="propertyFile"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:my.properties"
/>
<bean id="foo" class="Foo" p:doubleVal="${d1}"/>
Почему бы вам просто не использовать Двойной?какой-либо причине?
Весна 2.5+
Вы можете определить bean-компонент следующим образом в конфигурации Java:
@Configuration
public class BeanConfig {
@Bean
public Double doubleBean(){
return new Double(3.7);
}
}
Вы можете использовать этот компонент в своей программе следующим образом:
@Autowired
Double doubleBean;
public void printDouble(){
System.out.println(doubleBean); //sample usage
}