2016-05-26 3 views
0

У меня есть некоторый объект модели или так называемый POJO-объект в моем приложении. Эти объекты предназначены только для хранения данных и не будут выполнять никаких действий.Инициализировать объект POJO с помощью Spring

Я знаю, что в большинстве случаев Spring Beans не являются POJO. Например, в основном я объявляю классы DAO, Service, Controller как Spring Beans.

Но если я инициализирую POJO или даже объект List с новым ключевым словом , я плотно свяжу его с классом реализации.

Поэтому, если позже кто-то расширит мое POJO, чтобы добавить некоторую переменную-член, он не сможет ввести его в классы услуг.

Я подумал об использовании контекста приложения. Чтобы это сделать, я тогда плотно свяжу свое приложение с Spring.

Так что мой вопрос

Каков наилучший способ инициализации объекта POJO, что он может быть расширяемой позже. Я предпочитаю делать это с использованием пружинного пружинного контейнера IOC

ответ

1

Прежде всего, я бы так беспокоился о привязке кода к классам реализации. Вы правы в том, что IoC используется для предоставления гибких точек кодовой базе (расширение по сравнению с модификацией), но если вы не пишете фреймворк, нет причин не использовать ключевое слово new для создания экземпляра POJO. Когда кто-то собирается расширить ваш POJO, они, скорее всего, будут достаточно способны внедрить расширение в соответствующие службы.

Если вы действительно хотите использовать Spring, вам нужно будет зарегистрировать компонент в контейнере IoC. Если вам не нужен синглтон, вы можете использовать @Scope, чтобы Spring создавал экземпляр нового экземпляра каждый раз, когда запрашивается компонент:

@Component 
@Scope("prototype") 
public class Foo { 

}