Ответ 1
Вы можете:
- используйте аннотацию
@Value
и введите свойство (используя язык выражения) - посмотрите Project Lombok, который позволит вам пропустить все сеттеры и геттеры (и многое другое)
Использование Spring IoC позволяет устанавливать свойства bean, выставленные через сеттеры:
public class Bean {
private String value;
public void setValue(String value) {
this.value = value;
}
}
И определение bean:
<bean class="Bean">
<property name="value" value="Hello!">
</bean>
Существуют ли существующие плагины/классы для Spring Framework, которые позволяют напрямую выставлять поля bean как свойства без определения сеттеров? Что-то вроде этого с тем же определением bean:
public class Bean {
@Property
private String value;
}
Вы можете:
@Value
и введите свойство (используя язык выражения) Spring поддерживает вставку на основе аннотаций из коробки для JSR-250 @Resource
аннотация. Spring собственный @Autowired
и JSR 330 @Inject
также работают.
Вам просто нужно добавьте эту строку в свой контекст .xml:
<context:annotation-config/>
Справка:
То, что вы просите, невозможно. Spring подписывается на стандартную конфигурацию. Поэтому он ожидает, что там будут сеттеры и геттеры. Хотя возможна прямая инъекция в поле с помощью Spring; и Spring использует Reflection для достижения этого, Spring не предусматривает обратного этого процесса, чтобы использовать Reflection для доступа к полям без сеттеров или геттеров. Даже Spring реализация AOP предполагает найти методы для структурирования его прокси.