Для чего конкретно Spring Framework? [закрыто]

Вы не можете использовать регулярные выражения или другие подстановочные знаки в атрибуте Class-Path вашего манифеста.

В Java поддерживается только один поддерживаемый шаблон, и он работает только в том случае, если он указан в командной строке «ручной» java вызов (т. е. не используя -jar): с помощью directoryname/* .

592
задан Xenis 18 September 2018 в 11:55
поделиться

7 ответов

По сути, Spring - это фреймворк для , который является шаблоном, который позволяет строить очень разделенные системы.

Проблема

Например, предположим, что вам нужно перечислить пользователей system и, таким образом, объявить интерфейс с именем UserLister :

public interface UserLister {
    List<User> getUsers();
}

И, возможно, реализация, обращающаяся к базе данных, чтобы получить всех пользователей:

public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

По вашему мнению, вам потребуется доступ к экземпляру (просто пример, помните):

public class SomeView {
    private UserLister userLister;

    public void render() {
        List<User> users = userLister.getUsers();
        view.render(users);
    }
}

Обратите внимание, что в приведенном выше коде не инициализирована переменная userLister . Что нам делать? Если я явным образом создаю экземпляр объекта следующим образом:

UserLister userLister = new UserListerDB();

... я бы связал представление с моей реализацией класса, который обращается к БД. Что, если я хочу переключиться с реализации БД на другую, которая получает список пользователей из файла, разделенного запятыми (помните, это s пример)? В этом случае я бы снова обратился к своему коду и изменил последнюю строку следующим образом:

UserLister userLister = new UserListerCommaSeparatedFile();

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

Подход Spring (внедрение зависимостей)

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

Возвращаясь к примеру из Spring, нам просто нужно иметь установщик для поля userLister и иметь либо XML-файл, подобный этому:

<bean id="userLister" class="UserListerDB" />

<bean class="SomeView">
    <property name="userLister" ref="userLister" />
</bean>

, либо проще аннотировать поле в нашем классе представления с помощью @Inject :

@Inject
private UserLister userLister;

Таким образом, когда создается представление, оно волшебным образом будет иметь UserLister , готовый к работе.

List<User> users = userLister.getUsers();  // This will actually work
                                           // without adding any line of code

Это здорово! Не так ли?

  • Что делать, если вы хотите использовать другую реализацию вашего интерфейса UserLister ? Просто измените XML
  • Что делать, если у вас нет UserLister готово? Запрограммируйте временную фиктивную реализацию UserLister и упростите разработку представления
  • Что, если я больше не хочу использовать Spring? Просто не используйте Это! Ваше приложение не связано с ним. Инверсия управления гласит: «Приложение управляет фреймворком, а не фреймворк управляет приложением».

Есть и другие варианты внедрения зависимостей, Что, на мой взгляд, сделало Spring таким известным, помимо его простоты, элегантности и стабильности, так это то, что ребята из SpringSource запрограммировали множество POJO, которые помогают интегрировать Spring со многими другими распространенными фреймворками, не вмешиваясь в ваше приложение. Также в Spring есть несколько хороших подпроектов, таких как Spring MVC, Spring WebFlow, Spring Security и снова длинный список других.

Надеюсь, это поможет. В любом случае, я рекомендую вам прочитать статью Мартина Фаулера о внедрении зависимостей и инверсии управления, потому что он делает это лучше меня. После понимания основ загляните в Spring Documentation , на мой взгляд, раньше была лучшей книгой Spring за всю историю.

элегантность и стабильность заключается в том, что ребята из SpringSource запрограммировали множество POJO, которые помогают интегрировать Spring со многими другими распространенными фреймворками, не вмешиваясь в ваше приложение. Также в Spring есть несколько хороших подпроектов, таких как Spring MVC, Spring WebFlow, Spring Security и снова длинный список других.

Надеюсь, это поможет. В любом случае, я рекомендую вам прочитать статью Мартина Фаулера о внедрении зависимостей и инверсии управления, потому что он делает это лучше меня. После понимания основ загляните в Spring Documentation , на мой взгляд, раньше была лучшей книгой Spring за всю историю.

элегантность и стабильность заключается в том, что ребята из SpringSource запрограммировали множество POJO, которые помогают интегрировать Spring со многими другими распространенными фреймворками, не вмешиваясь в ваше приложение. Также в Spring есть несколько хороших подпроектов, таких как Spring MVC, Spring WebFlow, Spring Security и снова длинный список других.

Надеюсь, это поможет. В любом случае, я рекомендую вам прочитать статью Мартина Фаулера о внедрении зависимостей и инверсии управления, потому что он делает это лучше меня. После понимания основ загляните в Spring Documentation , на мой взгляд, раньше была лучшей книгой Spring за всю историю.

Также в Spring есть несколько хороших подпроектов, таких как Spring MVC, Spring WebFlow, Spring Security и снова длинный список других.

Надеюсь, это поможет. В любом случае, я рекомендую вам прочитать статью Мартина Фаулера о внедрении зависимостей и инверсии управления, потому что он делает это лучше меня. После понимания основ загляните в Spring Documentation , на мой взгляд, раньше была лучшей книгой Spring за всю историю.

Также в Spring есть несколько хороших подпроектов, таких как Spring MVC, Spring WebFlow, Spring Security и снова длинный список других.

Надеюсь, это поможет. В любом случае, я рекомендую вам прочитать статью Мартина Фаулера о внедрении зависимостей и инверсии управления, потому что он делает это лучше меня. После понимания основ загляните в Spring Documentation , на мой взгляд, раньше была лучшей книгой Spring за всю историю.

703
ответ дан 22 November 2019 в 22:00
поделиться

Spring started off as a fairly simple dependency injection system. Now it is huge and has everything in it (except for the proverbial kitchen sink).

But fear not, it is quite modular so you can use just the pieces you want.

To see where it all began try:

http://www.amazon.com/Expert-One-Design-Development-Programmer/dp/0764543857/ref=sr_1_1?ie=UTF8&s=books&qid=1246374863&sr=1-1

It might be old but it is an excellent book.

For another good book this time exclusively devoted to Spring see:

http://www.amazon.com/Professional-Java-Development-Spring-Framework/dp/0764574833/ref=sr_1_2?ie=UTF8&s=books&qid=1246374863&sr=1-2

It also references older versions of Spring but is definitely worth looking at.

1
ответ дан 22 November 2019 в 22:00
поделиться

То, что вы, вероятно, захотите от веб-приложения с Spring -

  • Spring MVC, который с 2.5+ позволяет вам использовать POJO в качестве классов контроллеров, что означает, что вам не нужно расширять из любого конкретного фреймворка (как в Struts или Spring до 2.5). Классы контроллеров также очень легко тестировать, отчасти благодаря внедрению зависимостей
  • Интеграция Spring с Hibernate, которая значительно упрощает работу с этим решением ORM (в большинстве случаев)
  • Использование Spring для веб-приложения позволяет вам использовать ваши объекты домена на всех уровнях приложения - те же классы, которые отображаются с помощью Hibernate, являются классами, которые вы используете как «компоненты формы». По своей природе это приведет к более надежной модели предметной области, отчасти потому, что она сократит количество классов.
  • Теги форм Spring упрощают создание форм без особых хлопот.

Кроме того, Spring ОГРОМНЫЙ - так что есть много других вещей, которые могут быть вам интересны в использовании в веб-приложениях, таких как Spring AOP или Spring Security. Но перечисленные выше четыре вещи описывают общие компоненты Spring, которые используются в веб-приложении.

11
ответ дан 22 November 2019 в 22:00
поделиться

Spring содержит ( как правильно указал Скаффман out ) фреймворк MVC. Чтобы вкратце объяснить, вот мои комментарии. Spring поддерживает разделение уровня обслуживания, веб-уровня и бизнес-уровня, но на самом деле лучше всего он «вставляет» объекты. Итак, чтобы объяснить это на примере, рассмотрим следующий пример:

public interface FourWheel
{
   public void drive();
}

public class Sedan implements FourWheel
{
   public void drive()
   {
      //drive gracefully
   }
}

public class SUV implements FourWheel
{
   public void drive()
   {
      //Rule the rough terrain
   }
}

Теперь в вашем коде есть класс RoadTrip, как показано ниже

public class RoadTrip
{
    private FourWheel myCarForTrip;
}

Теперь, когда вам нужен экземпляр Trip; иногда вам может понадобиться внедорожник для инициализации FourWheel, а иногда вам может понадобиться седан. Это действительно зависит от того, что вы хотите, в зависимости от конкретной ситуации.

Чтобы решить эту проблему, вам нужно иметь заводской шаблон в качестве шаблона создания. Где фабрика возвращает нужный экземпляр. Так что в конечном итоге у вас будет много связующего кода, просто чтобы правильно создавать объекты. Spring лучше всего справляется со связующим кодом без этого связующего кода. Вы объявляете сопоставления в XML, и он автоматически инициализирует объекты. Он также много использует одноэлементную архитектуру для экземпляров, что помогает оптимизировать использование памяти.

Это также называется инверсией управления. Другие структуры для этого - Google guice, контейнер Pico и т. Д.

Помимо этого, Spring имеет среду проверки, обширную поддержку уровня DAO в сотрудничестве с JDBC, iBatis и Hibernate (и многими другими). Обеспечивает отличный транзакционный контроль над транзакциями базы данных.

В Spring есть гораздо больше, что можно прочитать в хороших книгах, таких как «Pro Spring».

Следующие URL-адреса тоже могут помочь.
http://static.springframework.org/docs/Spring -MVC-step-by-step /
http://en.wikipedia.org/wiki/Spring_Framework
http://www.theserverside.com/tt/articles/article.tss?l=SpringFramework

62
ответ дан 22 November 2019 в 22:00
поделиться

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

Вашим объектам доступа к данным всегда будет требоваться доступ к Hibernate, Spring связывает классы Hibernate с вашими DAO.

Кроме того, Spring в основном дает вам надежные конфигурации множества библиотек, и в этом случае дает вам руководство в том, что библиотеки, которые вам следует использовать.

Весна - действительно отличный инструмент. (Я не говорил о Spring MVC, только о базовой структуре).

8
ответ дан 22 November 2019 в 22:00
поделиться

Spring - хорошая альтернатива технологии Enterprise JavaBeans (EJB) . Он также имеет веб-фреймворк и компонент фреймворка веб-сервисов.

3
ответ дан 22 November 2019 в 22:00
поделиться

Вкратце, я скажу, что Spring - это «клей» в вашем приложении. Он используется для интеграции различных фреймворков и вашего собственного кода.

18
ответ дан 22 November 2019 в 22:00
поделиться
Другие вопросы по тегам:

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