@daniil14056

Что дает Java Spring?

Хотел бы освоить фреймворк на java, начал читать учебник по spring, и уже со счета сбился от списка разных технологий, которые нужно знать до ее освоения, и все же я ни как не пойму в чем выгода Spring?
  • Вопрос задан
  • 1355 просмотров
Пригласить эксперта
Ответы на вопрос 3
zolt85
@zolt85
Программист
Spring Framework, как и любой другой уважающий себя framework, дает Вам основу, скелет, систему координат, в которой Вы (а еще важнее не только Вы, но и другие разработчики) разбираетесь и ориентируетесь. И вот используя этот скелет, можно строить приложения. В основе своей Spring Framework это про бины, управление бинами и IoC (Inversion of Control). Поверх всего этого строятся остальные модули Spring Security, Spring MVC и прочие (тысячи их!).
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Вся и идея spring и ему подобных в технологиях DI и IoC.
Первая технология DI - Dependency Injection - внедрение зависимостей. Смысл следующий, пусть у нас есть класс, который зависит от другого класса, тогда контейнер автоматически найдет все зависимости и сам проинициализирует нужный класс. Пример: пусть у нас есть интерфейс "Фрукт", класс "Яблоко", интерфейс "Паразит", класс "Червяк". В класса "Яблоко" указываем в одном из методов или конструкторе зависимость от интерфейса "Паразит". Теперь положим в контейнер классы "Червяк" и "Яблоко", и попросим контейнер создать дать нам инстанс класса "Яблоко".
Контейнер выполнит следующие действия:
- посмотрит, что без класса, реализующего интерфейс "Паразит", он не может создать "Яблоко".
- посмотрит на зарегистрированные классы, не реализует ли кто интерфейс "Паразит" и обнаружит класс "Червяк"
- создаст инстанс класса "Червяк"
- создаст инстанс класса "Яблоко" и передаст ему инстанс класса "Червяк"
- отдаст созданный инстанс "Яблоко" нам.

Теперь мы можем создать класс "Ева" с зависимостью от интерфейса "Фрукт", положить его в контейнер, и положить в контейнер класс "Адам" с зависимостью от "Ева" и попросить создать нам инстанс класса "Адам" :-)
MutablePicoContainer pico = new DefaultPicoContainer();
pico.addComponent(Fruit.class);
pico.addComponent(Worm.class);
pico.addComponent(Eve.class);
pico.addComponent(Adam.class);
.....
Adam adam = pico.getComponent(Adam.class);


Вторая технология IoC - Inversion of Control - контроль управления - это как раз и есть одна из реализаций принципа DI, когда внедрение зависимостей происходит через посредника - фреймворк.

Легче всего разобраться с этим (а уж потом переходить к spring) - поработать с простыми контейнерами типа picocontainer , nanocontainer и guice.
- picocontainer.com/introduction.html
- https://github.com/google/guice
Ответ написан
Комментировать
Привет

Прочитай книжку Spring для профессионалов 4 - поймешь, для чего нужен спринг, и что он тебе дает в общем. Если тебе просто нужно сделать какой-то сайт или веб-проект в одни руки или маленькой командой, то сразу забей и беги от Spring - это явно не твой выбор.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы