Книги по java spring

Книги по java spring

Привет, Хаброжители! Мы издали книгу в которой дается обзор фреймворка Spring 5 и паттернов проектирования для него. Объясняется принцип внедрения зависимостей (dependency injection), играющий ключевую роль при создании слабосвязанного кода во фреймворке Spring. Затем рассматриваются классические паттерны «Банды четырех» при проектировании приложений на Spring. В следующих частях книги автор рассматривает паттерны аспектно-ориентированного программирования (AOP), шаблоны JDBC, позволяющие абстрагировать доступ к базе данных. В заключительных главах книги автор исследует работу с MVC, реактивные шаблоны проектирования и паттерны проектирования, применяемые при конкурентном и параллельном программировании в Spring.

Предлагаем ознакомиться с отрывком «Паттерн «Объект доступа к данным»»

«Объект доступа к данным» (Data Access Object, DAO) — чрезвычайно популярный паттерн проектирования для уровня сохранения в приложениях J2EE. Он отделяет уровень бизнес-логики от уровня сохранения. Паттерн DAO основан на объектно-ориентированных принципах инкапсуляции и абстракции. Контекст использования паттерна DAO — доступ к данным и их сохранение в зависимости от конкретной реализации и типа хранилища, например объектно-ориентированной базы данных, неструктурированных файлов, реляционных баз данных и т. д. На основе паттерна DAO можно создать интерфейс DAO и реализовать его, чтобы абстрагировать и инкапсулировать все обращения к источнику данных. Подобная реализация DAO управляет такими ресурсами базы данных, как соединения с источником данных.

Интерфейсы DAO очень легко адаптируются ко всем нижележащим механизмам источников данных, их не нужно заменять при изменениях в технологиях сохранения на более низких уровнях. Этот паттерн позволяет внедрять различные технологии доступа к данным, никак не затрагивая бизнес-логику корпоративного приложения. Рассмотрим рис. 8.1, чтобы лучше понять принципы паттерна DAO.

Как можно видеть на схеме, в паттерне участвуют следующие объекты.

BusinessObject — объект, работающий на бизнес-уровне, — клиент для уровня доступа к данным. Ему нужны данные, чтобы моделировать бизнес-процессы, а также подготавливать Java-объекты для вспомогательных функций или контроллеров приложения.

DataAccessObject — основной объект паттерна DAO. Скрывает от BusinessObject всю низкоуровневую реализацию работы нижележащей базы данных.

DataSource — тоже объект, содержащий всю низкоуровневую информацию о том, что именно представляет собой нижележащая база данных: RDBMS, неструктурированные файлы или XML.

TransferObject — объект, используемый как носитель информации. Применяется объектом DataAccessObject для возврата данных объекту BusinessObject.

Рассмотрим следующий пример паттерна DAO, в котором AccountDao представляет собой интерфейс объекта DataAccessObject, а AccountDaoImpl — класс, реализующий интерфейс AccountDao:

Создание объектов DAO в Spring с помощью паттерна проектирования «Фабрика»

Как вы знаете, во фреймворке Spring задействуется множество паттернов проектирования. Паттерн «Фабрика» представляет собой порождающий паттерн проектирования и используется для создания объекта без раскрытия клиенту нижележащей логики, а также назначения вызывающей стороне нового объекта с помощью общего интерфейса или абстрактного класса. Благодаря паттернам проектирования «Фабричный метод» и «Абстрактная фабрика» можно достичь очень высокой гибкости паттерна DAO.

Выясним, где в нашем примере мы реализуем стратегию, в которой фабрика производит объекты DAO для реализации общей базы данных (рис. 8.2).

Вы можете увидеть на предыдущей схеме, что AccountDaoFactory производит объект AccountDao, то есть является для него фабрикой. Нижележащую базу данных можно заменить в любой момент, при этом бизнес-код менять не нужно — фабрика берет эту работу на себя. Spring поддерживает хранение всех DAO в фабрике компонентов, а также в фабрике DAO.

Паттерн «Отображение данных»

Фреймворк ORM обеспечивает отображение между объектами и реляционными базами данных, ведь объекты и таблицы реляционных баз данных по-разному хранят данные приложения. Кроме того, в объектах и таблицах есть различные механизмы структурирования данных. При использовании в приложении Spring любого ORM-решения, например Hibernate, JPA или JDO, нет нужды волноваться о механизме отображения между объектами и реляционными базами данных.

Рассмотрим рис. 8.3, чтобы лучше разобраться с паттерном «Отображение данных» (Data Mapper).

На схеме происходит отображение объекта Account в реляционную базу данных посредством интерфейса AccountMapper. AccountMapper играет в приложении роль посредника между Java-объектом и нижележащей базой данных. Рассмотрим еще один паттерн, используемый на уровне доступа к данным.

Читайте также:  Как перезагружать айфон 4

Паттерн «Модель предметной области»

Модель предметной области — объект, у которого есть и данные, и поведение, где поведение определяет бизнес-логику корпоративного приложения, а данные представляют собой информацию о результатах бизнеса. Модель предметной области объединяет данные и технологический процесс. В корпоративном приложении модель данных располагается ниже бизнес-уровня и определяет бизнес-логику, возвращая результаты бизнес-поведения. Рассмотрим следующую схему для большей ясности (рис. 8.4).

Как можно видеть на схеме, в приложении заданы две модели предметной области в соответствии с бизнес-требованиями. Бизнес-алгоритм перевода денег с одного счета на другой описан в классе TransferService. Классы TransferService и AccountService относятся к паттерну «Модель предметной области» в корпоративном приложении.

Прокси для паттерна «Отложенная загрузка»

«Отложенная загрузка» — паттерн проектирования, используемый некоторыми из ORM-решений, например Hibernate, в корпоративных приложениях, чтобы отложить инициализацию объекта до момента обращения к нему другого объекта, то есть момента, когда он понадобится. Цель этого паттерна проектирования состоит в оптимизации памяти в приложении. Паттерн проектирования «Отложенная загрузка» в Hibernate реализуется с помощью виртуального объекта-прокси. При демонстрации отложенной загрузки мы используем прокси, но он не относится к паттерну «Заместитель».

Паттерн «Шаблонный метод» для поддержки Hibernate в Spring

Фреймворк Spring предоставляет вспомогательный класс для доступа к данным на уровне DAO, основанный на паттерне проектирования «Шаблонный метод» GoF. Класс HibernateTemplate фреймворка Spring поддерживает такие операции баз данных, как save, create, delete и update. Этот класс гарантирует, что для каждой транзакции используется только один сеанс Hibernate.

Интеграция Hibernate со Spring

Hibernate — ORM-фреймворк сохранения с открытым исходным кодом, который не только обеспечивает отображение простых объектных взаимосвязей между Java-объектами и таблицами базы данных, но и предлагает множество продвинутых возможностей для повышения производительности приложения, а также помогает улучшить использование ресурсов, например с помощью кэширования, отложенной загрузки, немедленного извлечения данных и распределенного кэширования.

Spring обеспечивает полную поддержку интеграции с фреймворком Hibernate, у него имеется несколько встроенных библиотек, позволяющих задействовать Hibernate на все 100 %. Для задания настроек Hibernate в приложении можно воспользоваться паттерном внедрения зависимостей и контейнером IoC фреймворка Spring.

В следующем разделе мы выясним, как правильно настроить Hibernate в контейнере IoC фреймворка Spring.

Задание настроек объекта SessionFactory фреймворка Hibernate в контейнере Spring

Оптимальный подход к настройке Hibernate и других технологий сохранения в любом корпоративном приложении состоит в разделении бизнес-объектов с жестко «зашитыми» справочниками ресурсов, такими как DataSource в JDBC или SessionFactory в Hibernate. Эти ресурсы можно описать в виде компонентов в контейнере Spring. Но для доступа к ним бизнес-объектам необходимы ссылки на них. Рассмотрим следующий класс DAO, использующий объект SessionFactory для получения данных для приложения:

Как можно видеть, класс DAO, AccountDaoImpl, следует паттерну внедрения зависимостей. Для доступа к данным в него внедряется объект SessionFactory фреймворка Hibernate, и он прекрасно чувствует себя в контейнере IoC Spring. Объект SessionFactory фреймворка Hibernate представляет собой объект-одиночку, он генерирует основной объект интерфейса Hibernate org.hibernate.Session. Объект SessionFactory управляет объектом Session, а также отвечает за его открытие и закрытие. Интерфейс Session содержит реальную функциональность доступа к данным — сохранения (save), обновления (update), удаления (delete) и загрузки (load) объектов из базы данных. В приложении объект класса AccountDaoImpl или любой другой репозиторий выполняет с помощью этого объекта Session все необходимые операции хранения данных.

Фреймворк Spring предоставляет встроенные модули Hibernate, так что вы можете использовать в своих приложениях компоненты SessionFactory Hibernate.

Компонент org.springframework.orm.hibernate5.LocalSessionFactoryBean представляет собой реализацию интерфейса FactoryBean фреймворка Spring. LocalSessionFactoryBean основан на паттерне «Абстрактная фабрика», он генерирует в приложении объект SessionFactory. Этот объект можно сконфигурировать в виде компонента в контексте Spring приложения следующим образом:

Читайте также:  Косой слив унитаза фото

В этом коде мы сконфигурировали объект SessionFactory в виде компонента с помощью класса LocalSessionFactoryBean фреймворка Spring. Метод этого компонента принимает на входе объект типа DataSource в качестве аргумента, который определяет место и способ соединения с базой данных. Мы также указали, какой пакет просматривать, задав значение «com.packt.patterninspring.chapter8.bankapp.model» для свойства setPackagesToScan компонента LocalSessionFactoryBean, и задали свойство dialect компонента SessionFactory с помощью метода setHibernateProperties для указания того, с каким типом базы данных мы имеем дело в приложении.

Теперь, после настройки компонента SessionFactory Hibernate, в контексте приложения Spring посмотрим, как можно реализовать объекты доступа к данным для уровня сохранения нашего приложения.

Об авторе

Динеш Раджпут — главный редактор сайта Dineshonjava, технического блога, посвященного технологиям Java и Spring. На сайте размещены статьи на тему Java-технологий. Динеш — блогер, автор книг, c 2008 года энтузиаст Spring, сертифицированный специалист компании Pivotal (Pivotal Certified Spring Professional). Обладает более чем десятилетним опытом проектирования и разработки с использованием Java и Spring. Специализируется на работе с последней версией Spring Framework, Spring Boot, Spring Security, на создании REST API, архитектуре микросервисов, реактивном программировании, аспектно-ориентированном программировании с применением Spring, паттернах проектирования, Struts, Hibernate, веб-сервисах, Spring Batch, Cassandra, MongoDB, архитектуре веб-приложений.

В настоящее время Динеш работает менеджером по технологиям в одной из компаний, лидирующих в области создания программного обеспечения (ПО). Был разработчиком и руководителем команды в Bennett, Coleman & Co. Ltd, а до этого — ведущим разработчиком в Paytm. Динеш с восторгом относится к новейшим технологиям Java и любит писать о них в технических блогах. Является активным участником Java- и Spring-сообществ на различных форумах. Динеш — один из лучших специалистов по Java и Spring.

О рецензенте

Раджив Кумар Мохан обладает большим опытом разработки ПО и корпоративного обучения. На протяжении 18 лет он работал в таких крупнейших IT-компаниях, как IBM, Pentasoft, Sapient и Deft Infosystems. Начал карьеру как программист, руководил многими проектами.

Является экспертом в предметной области Java, J2EE и родственных фреймворках, Android, UI-технологиях. Сертифицирован компанией Sun в качестве Java-программиста (SCJP, Sun Certified Java Programmer) и веб-разработчика на Java (Sun Certified Web Component Developer, SCWCD). Раджив имеет четыре высших образования: в области информатики (Computer Science), прикладной информатики (Computer Applications), органической химии и делового администрирования (MBA). Является консультантом по подбору персонала и экспертом по обучению в HCL, Amdocs, Steria, TCS, Wipro, Oracle University, IBM, CSC, Genpact, Sapient Infosys и Capgemini.

Раджив — основатель фирмы SNS Infotech, расположенной в городе Большая Нойда. Кроме того, он работал в Национальном институте технологий моды (National Institute Of Fashion Technology, NIFT).

Для Хаброжителей скидка 20% по купону — Spring

Вы можете помочь и перевести немного средств на развитие сайта

Ситуации, когда нужен джавист, но не требуется знание Spring – редкость. Представляем полный видеокурс на тему "Spring для начинающих".

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

Курс начинается с определения фреймворка как универсального инструмента с открытым исходным кодом. Основная цель Spring – разгрузка кода и упрощение разработки на Java.

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

Вступительная лирика позади, и второй урок готовит нас к:

  • Установке Eclipse
  • Установке Maven
  • Установке Spring
  • Созданию тестового проекта

Возможно, поклонникам более современных IDE Eclipse покажется дикостью, но в работе будет использоваться именно эта среда.

Чтобы ознакомиться с Maven, нужно немного отвлечься от основного курса и посмотреть данное видео:

Читайте также:  Как узнать скрытый возраст в контакте

Первый пример подробно разбирается уже в пятом видеоуроке. План состоит в переводе проектов на Spring, настройке контейнера, связывании объектов и конфигурации XML.

Начало видео оснащено основной терминологией, которая поможет корректно воспринять информацию не только из пятого, но и из последующих уроков.

Начало традиционно вобрало в себя необходимую терминологию и принципы работы каждого элемента. Рассмотрены области действия компонентов Singleton и Prototype, ряд методов, интерфейсов, а также ленивая инициализация (параметр lazy-init).

В конце первой части десятого урока дается домашнее задание, а во второй производится его разбор.

Далее ряд видеоуроков посвящается внедрению методов, коллекциям, SpEL, автоматическому связыванию и аннотациям.

А вот и более практическая часть, которая призвана закрепить всю теорию, которая была изложена ранее. Это разбор учебного проекта от IBM + анализ связки Swing и Spring IoC. Вы увидите, насколько более удобно писать "формы" с использованием Spring, а не только на чистом Swing. Любителям создавать качественные UI будет особенно интересно.

Spring для начинающих не может обойтись без понимания аспектно-ориентированного программирования, поэтому данной теме полностью посвящено 3 урока. Первый урок – чистая теория:

Второй показывает на практике, как работают аспекты, и для чего они нужны:

Третий урок, основываясь на предыдущих двух, дополняет теоретическую часть по AOP:

Раскрытие вопросов, как умеет Spring работать с базами данных, и почему его так часто выбирают для работы с БД. Этот универсальный фреймворк может работать с разными типами подключения к данным. Из наиболее часто используемых это:

Подробно объясняются преимущества и недостатки каждого инструмента, что особенно удобно, если вы новичок в работе с БД и понятия не имеете, с чем "сотрудничает" Spring.

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

Урок 37 был посвящен транзакциям, и перед более основательным углублением в вопрос автор предлагает немного усовершенствовать проект, усложнить его, подготовив таким образом к дальнейшим действиям.

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

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

План урока включает сравнение контекста веб-приложения и контекста Spring, создание Spring MVC приложения, в котором используется плагин Eclipse, структуру проекта и рассмотрение библиотеки Log4J.

После разбора MVC, его структуры и тестового проекта есть смысл проанализировать подключение таблицы стилей в проект, так как данный вопрос нередко вызывает затруднения у новичков.

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

В оставшейся части курса разбираются дополнительные инструменты, объекты, параметры, локализация, AJAX-запросы, JSF, etc. 66-ой урок – последний в первой части курса. Остальные посвящены Spring с использованием IntelliJ IDEA, GlassFish, MySQL, Hibernate и многого другого. Полный видеокурс вы найдете здесь:

Печатная книга (2)

О книге

71 балл при оплате Ozon.Card

Описание

Фреймворк Spring Framework — необходимый инструмент для разработчиков приложений на Java.
В книге описана последняя версия Spring 3, который несет в себе новые мощные особенности, такие как язык выражений SpEL, новые аннотации для работы с контейнером IоС и поддержка архитектуры REST. Крейг Уоллс обладает особым талантом придумывать весьма интересные примеры, сосредоточенные на особенностях и приемах использования Spring, которые действительно будут полезны читателям.

Издание предназначено как для начинающих пользователей фреймворка, так и для опытных пользователей Spring, желающих задействовать новые возможности версии 3.0.

Ссылка на основную публикацию
Клавиатура на айфоне фото
Восемь лет назад Стив Джобс анонсировал первый смартфон компании Apple. Одной из главных особенностей iPhone являлась возможность навигации по меню...
Какие комбинации клавиш необходимы для получения символов
Здравствуйте! Вы никогда не задумывались, сколько порой приходится тратить времени на обычные операции: выделить что-то мышкой, скопировать, затем вставить в...
Какие компрессоры стоят в холодильниках бирюса
С появлением широкого ассортимента импортного холодильного оборудования бытовая техника отечественного производства постепенно отошла на второй план. Однако ошибочно думать, что...
Клавиатура не отрывая пальца
Непрерывный ввод — это функция, которая позволяет вводить текст, проведя пальцем по клавиатуре. Это работает следующим образом. Допустим, вам нужно...
Adblock detector