Глубокая инициализация свойств Java Bean [закрыто]

StackOverflow https://stackoverflow.com/questions/224583

  •  03-07-2019
  •  | 
  •  

Вопрос

Вы беспокоитесь об инициализации значений Java-бинов? Скажем, например:

([g | s] etters опущено)

public class SomeClass {

    private String foo;

    private Date bar;

    private Baz someObject;

}

(Да, это POJO, используемый в качестве bean-компонента, а не Java-компонента в самом строгом смысле)

В пустом конструкторе вы инициализируете эти элементы или просто ничего не делаете? Аналогично, Baz инициализировал бы и своих членов?

Или вы просто оставляете их пустыми?

Это было полезно?

Решение

Это зависит от варианта использования.

Если я использую свойства в качестве служебных зависимостей, они должны быть инициализированы для правильной работы (кстати, у Spring DI есть удобный способ сделать это).

Если я использую bean-компонент как часть модели предметной области, обычно недопустимо иметь какое-либо нулевое свойство. Возможно, он не инициализируется при запуске, но я пытаюсь создать исключение IllegalStateException, если какое-либо поле не задано во время бизнес-операции.

Другие советы

Если это вообще возможно, я инициализирую переменные при объявлении, если их нужно инициализировать. Эти операторы инициализации фактически вызываются из конструктора.

Обычно я оставляю их как пустые, если нет веских причин для их инициализации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top