Пометка стороннего свойства класса как требуется (Java / Spring) - PullRequest
0 голосов
/ 09 октября 2009

Недавно я столкнулся с очень озадачивающей ошибкой при попытке очистить мои весенние конфиги. Исключение было выброшено из глубины сторонней библиотеки и в основном представляло собой запутанный NPE.

То, что я хотел бы сделать, это настроить Spring так, чтобы он требовал определенного поля в этом классе, но я не хочу создавать пользовательскую версию библиотеки.

Очевидным решением было бы создать подкласс и пометить сеттер там, но из любопытства мне было интересно, есть ли простой способ сделать это весной без необходимости заниматься жонглированием в классе.

Java 6u10, Spring 2.5.

Ответы [ 2 ]

2 голосов
/ 09 октября 2009

Напишите FactoryBean для вашего объекта. Подклассы не обязательны.

Обновление (на основе комментариев / уточнения вопроса)

Я, наконец, понимаю, что вы пытаетесь сделать сейчас :-) В Spring нет ничего, что бы делало то, что вы хотите, но написать это довольно тривиально. Вы в основном смотрите на расширение org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor, за исключением того, что вы указываете статические имена классов / методов бина вместо того, чтобы полагаться на их аннотирование. Вам нужно будет перезаписать isRequiredProperty() метод.

1 голос
/ 09 октября 2009

Я бы написал класс, который расширяет ваш текущий класс и реализует интерфейс InitalizingBean в Spring, который проверяет указанные вами поля.

...