Глубокая инициализация свойств Java Bean [закрыто]
Вопрос
Вы беспокоитесь об инициализации значений Java-бинов? Скажем, например:
([g | s] etters опущено)
public class SomeClass {
private String foo;
private Date bar;
private Baz someObject;
}
(Да, это POJO, используемый в качестве bean-компонента, а не Java-компонента в самом строгом смысле)
В пустом конструкторе вы инициализируете эти элементы или просто ничего не делаете? Аналогично, Baz инициализировал бы и своих членов?
Или вы просто оставляете их пустыми?
Решение
Это зависит от варианта использования.
Если я использую свойства в качестве служебных зависимостей, они должны быть инициализированы для правильной работы (кстати, у Spring DI есть удобный способ сделать это). Р>
Если я использую bean-компонент как часть модели предметной области, обычно недопустимо иметь какое-либо нулевое свойство. Возможно, он не инициализируется при запуске, но я пытаюсь создать исключение IllegalStateException, если какое-либо поле не задано во время бизнес-операции. Р>
Другие советы
Если это вообще возможно, я инициализирую переменные при объявлении, если их нужно инициализировать. Эти операторы инициализации фактически вызываются из конструктора.
Обычно я оставляю их как пустые, если нет веских причин для их инициализации.