Свойства примитива Spring bean при использовании @Component и @Autowired?
Как установить значение для примитивных свойств бина?
Так как у нас есть @Component
аннотация, а также @Autowired
аннотация также предназначена для привязки зависимостей экземпляра, так как насчет примитивных свойств?
@Component
class Person{
@Autowired
Address address;
int age /// what about this one?
}
2 ответа
Решение
Для примитивов вы можете использовать @Value
аннотаций. Обычный сценарий - иметь PropertyPlaceholderConfigurer
который загрузил значения из файла свойств, а затем @Value("${property.key}")
Вы также можете определить свои значения в виде bean-компонентов, что является более старой моделью:
<bean id="foo" class="java.lang.Integer" factory-method="valueOf">
<constructor-arg value="20" />
</bean>
а потом
@Autowired
@Qualifier("foo")
private int foo;
Я попробовал второй подход, предложенный Божо. Кажется, не работает.
Ниже работает. Определить боб как:
<bean id="foo" class="java.lang.Integer" factory-method="valueOf">
<constructor-arg value="20" />
</bean>
а потом
@Autowired
@Qualifier("foo")
private java.lang.Integer foo;
ИЛИ ЖЕ
@Autowired
private java.lang.Integer foo;