2016-09-23 2 views
2

В течение 2 месяцев я решил разработать веб-приложение в соответствии с шаблоном MVC.Spring MVC: как работает Spring Bean?

Я пришел из программы для встроенного (C/C++), поэтому я получу шаг за шагом на Java.

До сих пор я занимался разработкой всех своих приложений вручную i-e У меня были все мои сервлеты в пакете, мой JavaBean в пакете, мои (JPA) объекты в другом пакете и то же самое для слоя DAO. Пока все хорошо, я понимаю, что делаю, и все работает хорошо.

«» «Я развиваю и делаю все быстрее, я решил использовать Spring MVC (я хорошо слышал эту фреймворк), но здесь я встречаю некоторые проблемы понимания концепции Spring Beans.

Вот мои вопросы по этому поводу:

Что такое Spring Bean? (I have already read this but it's not tell me how using it?) (Для меня Bean был исключительно простым Java-классом, который уважает некоторые правила, но когда я смотрю на Spring Bean, он совершенно другой, я видел некоторые коды Spring, где их beans возвратил объект, почему они назвали его «Bean «Я смущен), так.

Где Spring Beans участвует в рабочем процессе SpringMVC?

Где в приложении следует разместить весенние бобы?

Как и когда использовать его?

Я использую JavaBeans в бизнес-части моего приложения, например, чтобы получить поля из формы, можно ли сделать то же самое с Spring Beans?

Поскольку конфигурация Spring Bean кажется сложной (потому что у меня проблемы с пониманием механизма позади), можем ли мы создать веб-приложение с Spring MVC без использования одного Spring-компонента (за исключением DispatcherServlet, конечно)?

Зачем использовать SpringBean вместо Java Bean?

Что еще делает весенний боб?

Я понимаю, что Spring MVC не так прост в обращении, есть много вещей для освоения и особенно много конфигураций.

С чего начать?

Должен ли я отказаться от использования Spring MVC?

Я искал в Интернете, чтобы понять, но я не могу найти ничего, что объясняет вещи в деталях.

спасибо.

PS: Извините за мой английский, я живу во Франции.

+2

Этот вопрос чрезвычайно широк. Боюсь, что многие люди не будут пытаться ответить на все это. –

ответ

2

Lemme попробуйте сначала объяснить точку Spring Framework.

Весна основана на концепции инверсии управления (IoC). Эта концепция в основном означает, что функциональные бобы выражают свои зависимости в интерфейсах и что что-то (в данном случае Spring) отвечает за инъекцию правильных реализаций.

Например, предположим, что у меня есть UserRepository (интерфейс). У меня две реализации: MySqlUserRepository и MongoDbUserRepository, так как мои клиенты могут выбрать одну из этих двух технологий хранения. Предположим теперь, что у меня есть несколько классов, которые потребляют UserRepository. Чтобы избежать того, чтобы все они должны были знать, какой из них мы используем, потребители выражают только то, что им нужен UserRepository (обычно через аннотацию @Inject), и я использую эту инфраструктуру для ввода правильного значения во время инициализации.

Это пункт Spring Framework. Эти объекты (UserRepository impl и consumer) - это Spring-managed-bean-компоненты или, более сжато, Spring Beans. Весна управляет их жизненным циклом и соединяет их вместе.

Spring MVC - это структура MVC, построенная на Spring Framework. То есть ваши артефакты MVC (контроллеры и т. Д.) Являются Spring Beans.

Весна должна, как правило, управлять всеми вашими объектами без состояний (бывают случаи, когда может быть веская причина не делать этого, но это выходит за рамки этого ответа). Ваши объекты с сохранением состояния - это то, что управляют ваши объекты без состояния. Spring управляет объектами, которые управляют вашим состоянием.

Spring - довольно мощная инфраструктура с большим количеством надстроек, и большинство пакетов в экосистеме java будут иметь как минимум учебник о том, как заставить их работать с Spring, если не из интеграции.

+0

Благодарим вас за пример UserRepository. Чтобы начать мой проект, я признаю эту концепцию, и я попытаюсь не сравнить ее с Java Bean. – akuma8

4

Ява бобы и управляемые весной бобы - это разные вещи. Java bean - это действительно какой-то объект с конкретным соглашением об именах, где весенний боб отличается.

Какая весна называется (управляемой пружиной) bean - это просто экземпляр класса, жизненный цикл которого управляется Spring framework. Он не должен следовать соглашениям об именах Java-бинов и т. Д. Наиболее прямолинейное использование компонента - это инъекция зависимостей.Например, вы можете вводить такой пружинный объект (bean) в другие компоненты, например, контроллеры.

У вас есть несколько способов создания компонента. It's nicely described in the doc.

Обратите внимание, что с весенней точки зрения даже контроллер является еще одним компонентом, который имеет некоторые дополнительные функции.

Чтобы начать работу, я пошёл бы с образцом приложения с пружинной загрузкой. Это экономит вам много настроек, и это, как правило, хорошая отправная точка.

+0

Большое спасибо за ваши объяснения, если я хорошо понимаю, что вы имеете в виду, все в Spring - это «SpringBean» так же, как и в Java, все есть «Object». Поэтому я должен помнить, что SpringBean полностью отличается от JavaBean. – akuma8

0

Чтобы сэкономить время для тех, кто хотел бы знать ответ на этот вопрос, на официальном сайте весны есть хорошее объяснение Spring Beans и high-level view of how Spring works. Ссылки ссылаются на версию 4.3.9 (последняя по времени), должна быть доступна более подробная информация. here.

В документации сказано:

Весной, объекты, составляющие основу вашего приложения и которые управляются контейнером Spring IoC называются бобы. Боб - это объект, который создается, собирается и иным образом управляется контейнером Spring IoC. В противном случае, bean - это просто один из многих объектов в вашем приложении.

...

Следующая диаграмма вид высокого уровня того, как весенне-полевых работ.enter image description here

+0

Спустя почти 7 месяцев, играя с весной, все становится понятнее, чем в тот день, когда я опубликовал этот вопрос. Это замечательный инструмент, когда мы понимаем, как это работает. Ожидание следующего выпуска – akuma8

Смежные вопросы