Свойства примитива 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;
Другие вопросы по тегам