Author(s): Юлиана Козмина, Роб Харроп, Крис Шефер, Кларенс Хо
Publisher: Диалектика
Year: 2019
Language: Russian
Pages: 1122
Посвящение ......Page 22
Об авторах ......Page 23
О техническом рецензенте ......Page 24
Благодарности ......Page 25
Введение. Ждем ваших отзывов! ......Page 28
Глава 1. Введение в Spring ......Page 30
Эволюция Spring Framework ......Page 31
Инверсия управления или внедрение зависимостей? ......Page 39
Эволюция внедрения зависимостей ......Page 41
Другие возможности, помимо внедрения зависимостей ......Page 43
Происхождение Spring ......Page 51
Комплект Spring Tool Suite ......Page 52
Проект Spring Boot ......Page 53
Альтернативы Spring ......Page 54
Контейнер JEE 7 ......Page 55
Резюме ......Page 56
Глава 2. Начало работы ......Page 58
Получение Spring Framework ......Page 59
Выбор подходящего комплекта JDK ......Page 60
Упаковка Spring ......Page 61
Выбор модулей для приложения ......Page 64
Доступ к модулям Spring в хранилище Maven ......Page 65
Доступ к модулям Spring из Gradle ......Page 67
Построение примера приложения “Hello World!” ......Page 68
Реорганизация кода средствами Spring ......Page 74
Резюме ......Page 79
Глава 3. Инверсия управления и внедрение зависимостей в Spring ......Page 80
Типы инверсии управления ......Page 81
Извлечение зависимостей ......Page 82
Контекстный поиск зависимостей ......Page 83
Внедрение зависимостей через конструктор ......Page 84
Внедрение зависимостей через метод установки ......Page 85
Выбор между внедрением и поиском зависимостей ......Page 86
Выбор между внедрением зависимостей через конструктор и метод установки ......Page 87
Инверсия управления в Spring ......Page 91
Компоненты Spring Beans и их фабрики ......Page 92
Реализации интерфейса BeanFactory ......Page 93
Способы конфигурирования приложений Spring ......Page 96
Краткое описание простой конфигурации ......Page 97
Объявление компонентов Spring ......Page 99
Внедрение зависимостей через метод класса ......Page 140
Именование компонентов Spring Beans ......Page 155
Разрешение зависимостей ......Page 172
Автосвязывание компонентов Spring Beans ......Page 176
Когда следует применять автосвязывание ......Page 188
Настройка наследования компонентов Spring Beans ......Page 189
Резюме ......Page 191
Глава 4. Конфигурирование и начальная загрузка в Spring ......Page 194
Влияние Spring на переносимость приложений ......Page 196
Управление жизненным циклом компонентов Spring Beans ......Page 197
Создание компонентов Spring Beans ......Page 199
Выполнение метода при создании компонента Spring Bean ......Page 201
Реализация интерфейса InitializingBean ......Page 206
Применение аннотации @PostConstruct по спецификации JSR-250 ......Page 208
Объявление метода инициализации с помощью аннотации @Bean ......Page 212
Описание порядка разрешения зависимостей ......Page 213
Уничтожение компонентов Spring Beans ......Page 214
Выполнение метода при уничтожении компонента Spring Bean ......Page 215
Реализация интерфейса DisposableBean ......Page 217
Применение аннотации @PreDestroy по спецификации JSR-250 ......Page 219
Объявление метода уничтожения с помощью аннотации @Bean ......Page 221
Применение перехватчика завершения ......Page 223
Информирование компонентов Spring Beans об их контексте ......Page 224
Применение интерфейса BeanNameAware ......Page 225
Применение интерфейса ApplicationContextAware ......Page 227
Применение фабрик компонентов Spring Beans ......Page 230
Класс MessageDigestFactoryBean как пример фабрики компонентов Spring Beans ......Page 231
Непосредственный доступ к фабрике компонентов Spring Beans ......Page 236
Применение атрибутов factory-bean и factory-method ......Page 237
Редакторы свойств компонентов Spring Beans ......Page 239
Применение встроенных редакторов строк ......Page 240
Создание специального редактора свойств ......Page 247
Еще о конфигурировании в контексте типа ApplicationContext ......Page 250
Интернационализация средствами интерфейса MessageSource ......Page 251
События в приложениях ......Page 256
Доступ к ресурсам ......Page 260
Конфигурирование контекста типа ApplicationContext на Java ......Page 262
Смешанное конфигурирование в Spring ......Page 273
Выбор между конфигурированием на Java и в формате XML ......Page 276
Пример применения профилей в Spring ......Page 277
Конфигурирование профилей Spring на языке Java ......Page 281
Абстракция через интерфейсы Environment и PropertySource ......Page 284
Конфигурирование с помощью аннотаций JSR-330 ......Page 290
Конфигурирование средствами Groovy ......Page 295
Модуль Spring Boot ......Page 298
Резюме ......Page 306
Глава 5. Введение в АОП средствами Spring ......Page 308
Основные понятия АОП ......Page 310
Реализация статического АОП ......Page 311
АОП в Spring ......Page 312
Пример вывода обращения в АОП ......Page 313
Архитектура АОП в Spring ......Page 315
Точки соединения в Spring ......Page 316
Описание класса ProxyFactory ......Page 317
Создание совета в Spring ......Page 318
Создание предшествующего совета ......Page 320
Защита доступа к методам с помощью предшествующего совета ......Page 322
Создание послевозвратного совета ......Page 327
Создание окружающего совета ......Page 331
Создание перехватывающего совета ......Page 335
Советники и срезы в Spring ......Page 338
Интерфейс Pointcut ......Page 339
Доступные реализации интерфейса Pointcut ......Page 341
Применение класса DefaultPointcutAdvisor ......Page 342
Создание статического среза с помощью класса StaticMethodMatcherPointcut ......Page 343
Создание динамического среза с помощью класса DynamicMethodMatcherPointcut ......Page 347
Простое сопоставление имен методов ......Page 350
Создание срезов с помощью регулярных выражений ......Page 353
Создание срезов с помощью выражений AspectJ ......Page 354
Создание срезов, совпадающих с аннотациями ......Page 356
Удобные реализации интерфейса Advisor ......Page 358
Общее представление о заместителях ......Page 359
Применение динамических заместителей из комплекта JDK ......Page 360
Применение заместителей из библиотеки CGLIB ......Page 361
Сравнение производительности заместителей ......Page 362
Расширенное использование срезов ......Page 367
Применение срезов потока управления ......Page 368
Применение составного среза ......Page 370
Составление срезов и интерфейс Pointcut ......Page 375
Краткие итоги по срезам ......Page 376
Основные положения о введениях ......Page 377
Выявление изменений в объекте с помощью введений ......Page 379
Каркасные службы для АОП ......Page 386
Применение класса ProxyFactoryBean ......Page 387
Применение пространства имен aop ......Page 395
Применение аннотаций в стиле @AspectJ ......Page 402
Соображения по поводу декларативного конфигурирования АОП в Spring ......Page 411
Общее представление о AspectJ ......Page 412
Применение одиночных экземпляров аспектов ......Page 413
Резюме ......Page 417
Глава 6. Поддержка JDBC в Spring ......Page 418
Модель выборочных данных для исходного кода примеров ......Page 420
Исследование инфраструктуры JDBC ......Page 427
Краткий обзор применяемых пакетов ......Page 433
Соединения с базой данных и источники данных ......Page 434
Поддержка встроенной базы данных ......Page 441
Применение источников данных в классах DAO ......Page 443
Обработка исключений ......Page 446
Инициализация объекта типа JdbcTemplate в классе DAO ......Page 448
Извлечение одиночного значения средствами класса JdbcTemplate ......Page 450
Применение именованных параметров запроса с помощью класса NamedParameterJdbcTemplate ......Page 451
Извлечение объектов предметной области с помощью интерфейса RowMapper ......Page 453
Извлечение вложенных объектов предметной области с помощью интерфейса ResultSetExtractor ......Page 456
Классы Spring, моделирующие операции в JDBC ......Page 460
Выборка данных с помощью класса MappingSqlQuery ......Page 463
Обновление данных с помощью класса SqlUpdate ......Page 468
Ввод данных и извлечение сгенерированного ключа ......Page 471
Группирование операций с помощью класса BatchSqlUpdate ......Page 474
Вызов хранимых функций с помощью класса SqlFunction ......Page 480
Проект Spring Data: расширения JDBC ......Page 483
Соображения по поводу применения JDBC ......Page 484
Стартовая библиотека Spring Boot для JDBC ......Page 485
Резюме ......Page 489
Глава 7. Применение Hibernate в Spring ......Page 490
Модель выборочных данных для исходного кода примеров ......Page 492
Конфигурирование фабрики сеансов Hibernate ......Page 494
Объектно-реляционное преобразование с помощью аннотаций Hibernate ......Page 499
Простые преобразования ......Page 500
Преобразование связей “один ко многим” ......Page 505
Преобразование связей “многие ко многим” ......Page 507
Интерфейс Session из библиотеки Hibernate ......Page 509
Выборка данных на языке запросов Hibernate ......Page 510
Простой запрос с отложенной выборкой ......Page 511
Запрос с выборкой связей ......Page 514
Вставка данных ......Page 518
Обновление данных ......Page 523
Удаление данных ......Page 525
Конфигурирование Hibernate для формирования таблиц из сущностей ......Page 527
Аннотировать ли методы или поля ......Page 531
Резюме ......Page 534
Глава 8. Доступ к данным в Spring через интерфейс JPA 2 ......Page 536
Введение в JPA 2.1 ......Page 538
Конфигурирование компонента типа EntityManagerFactory из интерфейса JPA ......Page 539
Применение аннотаций JPA для преобразований ORM ......Page 544
Запрашивание данных на языке JPQL ......Page 546
Запрашивание нетипизированных результатов ......Page 557
Запрос результатов специального типа с помощью выражения конструктора ......Page 559
Вставка данных ......Page 563
Обновление данных ......Page 566
Удаление данных ......Page 567
Применение собственного запроса ......Page 569
Собственный запрос с преобразованием результирующего набора SQL ......Page 570
Применение прикладного интерфейса JPA 2 Criteria API для запросов с критериями поиска ......Page 572
Введение в проект Spring Data JPA ......Page 579
Абстракция хранилища в Spring Data JPA для операций в базе данных ......Page 580
Применение интерфейса JpaRepository ......Page 588
Специальные запросы Spring Data JPA ......Page 590
Отслеживание изменений в классе сущности ......Page 592
Отслеживание версий сущностей средствами Hibernate Envers ......Page 605
Ввод таблиц для контроля версий сущностей ......Page 606
Конфигурирование фабрики диспетчера сущностей для контроля их версий ......Page 607
Включение режима контроля версий сущностей и извлечения предыстории ......Page 611
Тестирование контроля версий сущностей ......Page 613
Стартовая библиотека Spring Boot для JPA ......Page 616
Соображения по поводу применения прикладного интерфейса JPA ......Page 623
Резюме ......Page 624
Глава 9. Управление транзакциями ......Page 626
Исследование уровня абстракции транзакций в Spring ......Page 627
Типы транзакций ......Page 628
Реализации интерфейса PlatformTransactionManager ......Page 629
Анализ свойств транзакций ......Page 630
Интерфейс TransactionDefinition ......Page 631
Модель выборочных данных и инфраструктура для исходного кода примеров ......Page 634
Создание простого проекта Spring JPA с зависимостями ......Page 635
Модель выборочных данных и общие классы ......Page 638
Конфигурирование управления транзакциями в АОП ......Page 651
Применение программных транзакций ......Page 654
Обработка глобальных транзакций в Spring ......Page 657
Реализация глобальных транзакций средствами JTA ......Page 658
Стартовая библиотека Spring Boot для JTA ......Page 671
Резюме ......Page 678
Глава 10. Проверка достоверности с преобразованием типов и форматированием данных ......Page 680
Зависимости ......Page 681
Преобразование строковых данных с помощью редакторов свойств ......Page 682
Введение в систему преобразования типов данных в Spring ......Page 686
Реализация специального преобразователя ......Page 687
Конфигурирование интерфейса ConversionService ......Page 688
Взаимное преобразование произвольных типов данных ......Page 691
Форматирование полей в Spring ......Page 695
Реализация специального средства форматирования ......Page 696
Конфигурирование компонента типа ConversionServiceFactoryBean ......Page 698
Применение интерфейса Validator в Spring ......Page 700
Применение спецификации JSR-349 (Bean Validation) ......Page 703
Конфигурирование поддержки проверки достоверности для компонентов Spring Beans ......Page 705
Создание специального средства проверки достоверности ......Page 708
Специальная проверка достоверности с помощью аннотации @AssertTrue ......Page 711
Соображения по поводу специальной проверки достоверности ......Page 712
Выбор прикладного интерфейса API для проверки достоверности ......Page 713
Резюме ......Page 714
Зависимости для примеров планирования заданий ......Page 716
Планирование заданий в Spring ......Page 717
Введение в абстракцию интерфейса TaskScheduler ......Page 718
Анализ примера задания ......Page 719
Планирование заданий с помощью аннотаций ......Page 729
Асинхронное выполнение заданий в Spring ......Page 733
Выполнение заданий в Spring ......Page 737
Резюме ......Page 740
Глава 12. Организация удаленной обработки в Spring ......Page 742
Модель выборочных данных для исходного кода примеров ......Page 744
Внедрение обязательных зависимостей для серверной части JPA ......Page 746
Реализация интерфейса SingerService ......Page 748
Конфигурирование службы типа SingerService ......Page 750
Организация доступа к удаленной службе ......Page 754
Вызов удаленной службы ......Page 755
Применение службы JMS в Spring ......Page 757
Реализация приемника сообщений через службу JMS в Spring ......Page 762
Отправка сообщений через службу JMS в Spring ......Page 763
Запуск Artemis средствами Spring Boot ......Page 766
Введение в веб-службы REST ......Page 769
Ввод обязательных зависимостей для примеров из этой главы ......Page 770
Доступ к веб-службам REST средствами Spring MVC ......Page 771
Конфигурирование библиотеки Castor XML ......Page 772
Реализация контроллера в классе SingerController ......Page 775
Конфигурирование веб-приложения Spring ......Page 778
Тестирование веб-служб REST средствами curl ......Page 782
Применение класса RestTemplate для доступа к веб-службам REST ......Page 784
Защита веб-служб REST средствами Spring Security ......Page 791
Реализация веб-служб REST средствами Spring Boot ......Page 797
Применение протокола AMQP в Spring ......Page 801
Применение протокола AMQP вместе с модулем Spring Boot ......Page 808
Резюме ......Page 811
Глава 13. Тестирование в Spring ......Page 812
Описание разных видов тестирования ......Page 813
Применение тестовых аннотаций в Spring ......Page 815
Внедрение требующихся зависимостей ......Page 817
Модульное тестирование контроллеров Spring MVC ......Page 818
Реализация комплексного тестирования ......Page 822
Конфигурирование профиля для тестирования на уровне обслуживания ......Page 823
Вариант конфигурирования на языке Java ......Page 825
Реализация классов для среды тестирования ......Page 828
Модульное тестирование на уровне обслуживания ......Page 832
Отказ от услуг DbUnit ......Page 837
Модульное тестирование клиентской части веб-приложений ......Page 841
Введение в Selenium ......Page 842
Резюме ......Page 843
Глава 14. Поддержка сценариев в Spring ......Page 844
Как пользоваться поддержкой сценариев в Java ......Page 845
Введение в Groovy ......Page 847
Динамическая типизация ......Page 848
Упрощенный синтаксис ......Page 849
Замыкание ......Page 850
Разработка предметной области для певцов ......Page 852
Реализация механизма выполнения правил ......Page 853
Реализация фабрики правил в виде обновляемого компонента Spring Bean ......Page 856
Проверка правила возрастной категории ......Page 859
Встраивание кода, написанного на динамическом языке ......Page 863
Резюме ......Page 864
Глава 15. Мониторинг приложений ......Page 866
Экспорт компонентов Spring Beans в JMX ......Page 867
Настройка VisualVM для мониторинга средствами JMX ......Page 870
Мониторинг статистики применения Hibernate ......Page 872
Поддержка технологии JMX в модуле Spring Boot ......Page 875
Резюме ......Page 878
Глава 16. Разработка веб-приложений ......Page 880
Модель данных для примеров кода ......Page 882
Реализация уровня объектов доступа к базе данных ......Page 886
Реализация уровня обслуживания ......Page 887
Конфигурирование уровня обслуживания ......Page 889
Введение в проектный шаблон MVC ......Page 891
Иерархия контекстов типа WebApplicationContext в Spring MVC ......Page 893
Жизненный цикл обработки запросов в Spring MVC ......Page 895
Конфигурирование модуля Spring MVC ......Page 897
Создание первого представления в Spring MVC ......Page 900
Конфигурирование сервлета диспетчера ......Page 902
Реализация класса SingerController ......Page 904
Реализация представления списка певцов ......Page 905
Тестирование представления списка певцов ......Page 906
Описание структуры проекта в Spring MVC ......Page 907
Интернационализация веб-приложений ......Page 908
Настройка интернационализации в конфигурации сервлета диспетчера ......Page 909
Модификация представления списка певцов для поддержки интернационализации ......Page 911
Поддержка тематического оформления ......Page 913
Оформление компоновки шаблона ......Page 916
Реализация компонентов компоновки страницы ......Page 917
Конфигурирование Apache Tiles в Spring MVC ......Page 921
Сопоставление URL с представлениями ......Page 923
Реализация представления для показа сведений о певцах ......Page 924
Реализация представления для редактирования сведений о певцах ......Page 929
Реализация представления для ввода сведений о певце ......Page 934
Активизация проверки достоверности по спецификации JSR-349 ......Page 936
Применение библиотек jQuery и jQuery UI ......Page 939
Активизация библиотек jQuery и jQuery UI в представлении ......Page 940
Редактирование форматированного текста средствами CKEditor ......Page 943
Применение jqGrid для построения сетки данных с разбиением на страницы ......Page 944
Активизация jqGrid в представлении списка певцов ......Page 945
Активизация разбиения на страницы на стороне сервера ......Page 948
Конфигурирование поддержки выгрузки файлов ......Page 952
Видоизменение представлений для поддержки выгрузки файлов ......Page 954
Видоизменение контроллера для поддержки выгрузки файлов ......Page 956
Конфигурирование защиты в Spring Security ......Page 958
Внедрение в веб-приложение функций регистрации ......Page 963
Применение аннотаций для защиты методов контроллера ......Page 966
Разработка веб-приложений средствами Spring Boot ......Page 967
Установка уровня объектов DAO ......Page 969
Установка уровня обслуживания ......Page 971
Установка веб-уровня ......Page 972
Установка защиты средствами Spring Security ......Page 973
Создание представлений в Thymeleaf ......Page 974
Применение расширений Thymeleaf ......Page 980
Применение архивов Webjars ......Page 985
Резюме ......Page 988
Глава 17. Протокол WebSocket ......Page 990
Введение в сетевой протокол WebSocket ......Page 991
Применение протокола WebSocket вместе с каркасом Spring ......Page 992
Применение прикладного интерфейса WebSocket API ......Page 993
Применение протокола SockJS ......Page 1002
Отправка сообщений по протоколу STOMP ......Page 1008
Резюме ......Page 1017
Глава 18. Проекты Spring Batch, Spring Integration, Spring XD и прочие ......Page 1018
Проект Spring Batch ......Page 1020
Спецификация JSR-352 ......Page 1031
Библиотека Spring Boot для запуска Spring Batch ......Page 1036
Проект Spring Integration ......Page 1041
Проект Spring XD ......Page 1049
Наиболее примечательные функциональные средства каркаса Spring Framework ......Page 1052
Функциональный каркас веб-приложений ......Page 1053
Модульность комплекта JDK ......Page 1069
Реактивное программирование средствами JDK 9 и Spring WebFlux ......Page 1073
Поддержка JUnit 5 Jupiter в Spring ......Page 1077
Резюме ......Page 1090
Описание конфигурации Gradle ......Page 1092
Построение проекта и устранение неполадок ......Page 1097
Развертывание на сервере Apache Tomcat ......Page 1101
Предметный указатель ......Page 1106