Suche senden
Hochladen
Konstantin slisenko - Spring Framework
•
Als PPTX, PDF herunterladen
•
1 gefällt mir
•
1,116 views
B
beloslab
Folgen
Technologie
Bildung
Melden
Teilen
Melden
Teilen
1 von 27
Jetzt herunterladen
Empfohlen
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring Framework
CUSTIS
Spring in java
Spring in java
Asya Dudnik
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Andrey Rebrov
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
SQALab
Spring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny Borisov
JavaDayUA
системы сборок проектов
системы сборок проектов
Romero78
Сервлеты
Сервлеты
Unguryan Vitaliy
Maven как средство сборки проекта
Maven как средство сборки проекта
Yova Stoika
Empfohlen
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring Framework
CUSTIS
Spring in java
Spring in java
Asya Dudnik
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Andrey Rebrov
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
SQALab
Spring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny Borisov
JavaDayUA
системы сборок проектов
системы сборок проектов
Romero78
Сервлеты
Сервлеты
Unguryan Vitaliy
Maven как средство сборки проекта
Maven как средство сборки проекта
Yova Stoika
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
bearoff
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
7bits
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
JSP
JSP
Unguryan Vitaliy
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Alina Dolgikh
Maven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
Cookies, session и другое в JSP
Cookies, session и другое в JSP
Unguryan Vitaliy
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
7bits
Java 9 - Back to the Future
Java 9 - Back to the Future
Леонид Ставила
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
Noveo
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
Noveo
JIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиков
SQALab
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Fwdays
PureMVC and Papervision
PureMVC and Papervision
Dmitry Kuriksha
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Max Rozdobudko
UAFPUG6 - PureMVC
UAFPUG6 - PureMVC
mandrew182
Ruby on Rails. Работа с моделями — продолжение
Ruby on Rails. Работа с моделями — продолжение
Digital-агентство Мэйк
Обзор Ruby
Обзор Ruby
Digital-агентство Мэйк
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
Regn
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
SQALab
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF
Roman Brovko
Очень вкусный фрукт Guava
Очень вкусный фрукт Guava
Egor Chernyshev
Weitere ähnliche Inhalte
Was ist angesagt?
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
bearoff
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
7bits
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
JSP
JSP
Unguryan Vitaliy
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Alina Dolgikh
Maven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev
Cookies, session и другое в JSP
Cookies, session и другое в JSP
Unguryan Vitaliy
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
7bits
Java 9 - Back to the Future
Java 9 - Back to the Future
Леонид Ставила
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
Noveo
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
Noveo
JIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиков
SQALab
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Fwdays
PureMVC and Papervision
PureMVC and Papervision
Dmitry Kuriksha
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Max Rozdobudko
UAFPUG6 - PureMVC
UAFPUG6 - PureMVC
mandrew182
Ruby on Rails. Работа с моделями — продолжение
Ruby on Rails. Работа с моделями — продолжение
Digital-агентство Мэйк
Обзор Ruby
Обзор Ruby
Digital-агентство Мэйк
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
Regn
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
SQALab
Was ist angesagt?
(20)
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
JSP
JSP
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Владимир Еремин. Extending Openstack. PyCon Belarus 2015
Maven 3 : уличная магия
Maven 3 : уличная магия
Cookies, session и другое в JSP
Cookies, session и другое в JSP
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Java 9 - Back to the Future
Java 9 - Back to the Future
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
JIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиков
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
PureMVC and Papervision
PureMVC and Papervision
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
UAFPUG6 - PureMVC
UAFPUG6 - PureMVC
Ruby on Rails. Работа с моделями — продолжение
Ruby on Rails. Работа с моделями — продолжение
Обзор Ruby
Обзор Ruby
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
Andere mochten auch
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF
Roman Brovko
Очень вкусный фрукт Guava
Очень вкусный фрукт Guava
Egor Chernyshev
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
Anna Tarasenko
"IntelliJ IDEA и Android Studio для Android-разработчиков". Филипп Торчинский...
"IntelliJ IDEA и Android Studio для Android-разработчиков". Филипп Торчинский...
Yandex
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
SQALab
67 - Spring. Начальные знания
67 - Spring. Начальные знания
Roman Brovko
Javaone 2013 moscow gradle
Javaone 2013 moscow gradle
Evgeny Borisov
141 - Spring. Добавление контроллеров Spring MVC
141 - Spring. Добавление контроллеров Spring MVC
Roman Brovko
Введение в maven
Введение в maven
Dmitry Zinushin
Gradle
Gradle
Ilya Lapitan
Getting Started with Spring Framework
Getting Started with Spring Framework
Edureka!
Apache Camel + Apache ActiveMQ persistence
Apache Camel + Apache ActiveMQ persistence
Ilya Lapitan
Проблемы производительности open source библиотек
Проблемы производительности open source библиотек
Vladimir Sitnikov
Maven lifecycle
Maven lifecycle
Ilya Lapitan
Секреты сборки мусора в Java
Секреты сборки мусора в Java
aragozin
Spring Framework - Core
Spring Framework - Core
Dzmitry Naskou
Andere mochten auch
(16)
66 - Spring. Spring и JSF
66 - Spring. Spring и JSF
Очень вкусный фрукт Guava
Очень вкусный фрукт Guava
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
Скорость не в ущерб качеству, web-разработка на Java, Java day, Omsk, 2014
"IntelliJ IDEA и Android Studio для Android-разработчиков". Филипп Торчинский...
"IntelliJ IDEA и Android Studio для Android-разработчиков". Филипп Торчинский...
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
67 - Spring. Начальные знания
67 - Spring. Начальные знания
Javaone 2013 moscow gradle
Javaone 2013 moscow gradle
141 - Spring. Добавление контроллеров Spring MVC
141 - Spring. Добавление контроллеров Spring MVC
Введение в maven
Введение в maven
Gradle
Gradle
Getting Started with Spring Framework
Getting Started with Spring Framework
Apache Camel + Apache ActiveMQ persistence
Apache Camel + Apache ActiveMQ persistence
Проблемы производительности open source библиотек
Проблемы производительности open source библиотек
Maven lifecycle
Maven lifecycle
Секреты сборки мусора в Java
Секреты сборки мусора в Java
Spring Framework - Core
Spring Framework - Core
Ähnlich wie Konstantin slisenko - Spring Framework
Konstantin slisenko - Design patterns
Konstantin slisenko - Design patterns
beloslab
Unit test быстрый старт
Unit test быстрый старт
Antonio
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
Yandex
Node.js (RichClient)
Node.js (RichClient)
Serge Shirokov
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Oleg Nenashev
Решения для автоматизации тестирования Web-приложений на базе Selenium
Решения для автоматизации тестирования Web-приложений на базе Selenium
SQALab
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
beloslab
Client Side Autotesting Flash
Client Side Autotesting Flash
guestb0af15
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Kirill Chebunin
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement
beloslab
Другая виртуализация
Другая виртуализация
Yandex
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
Fedor Malyshkin
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Stfalcon Meetups
Froglogic Squish
Froglogic Squish
SQALab
Android - 01 - Java Basics
Android - 01 - Java Basics
Noveo
Взломать сайт на ASP.NET
Взломать сайт на ASP.NET
Positive Hack Days
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
Igor Shkulipa
Помоги ближнему, или Как потоки помогают друг другу
Помоги ближнему, или Как потоки помогают друг другу
Alexey Fyodorov
Помоги ближнему, или Как потоки помогают друг другу
Помоги ближнему, или Как потоки помогают друг другу
CEE-SEC(R)
Groovy presentation on Exception #7 conference
Groovy presentation on Exception #7 conference
voituk
Ähnlich wie Konstantin slisenko - Spring Framework
(20)
Konstantin slisenko - Design patterns
Konstantin slisenko - Design patterns
Unit test быстрый старт
Unit test быстрый старт
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
Node.js (RichClient)
Node.js (RichClient)
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Решения для автоматизации тестирования Web-приложений на базе Selenium
Решения для автоматизации тестирования Web-приложений на базе Selenium
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Client Side Autotesting Flash
Client Side Autotesting Flash
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement
Другая виртуализация
Другая виртуализация
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Froglogic Squish
Froglogic Squish
Android - 01 - Java Basics
Android - 01 - Java Basics
Взломать сайт на ASP.NET
Взломать сайт на ASP.NET
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
Помоги ближнему, или Как потоки помогают друг другу
Помоги ближнему, или Как потоки помогают друг другу
Помоги ближнему, или Как потоки помогают друг другу
Помоги ближнему, или Как потоки помогают друг другу
Groovy presentation on Exception #7 conference
Groovy presentation on Exception #7 conference
Mehr von beloslab
Mr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo camp
beloslab
Mr. Keil Werner - UOMO 2011
Mr. Keil Werner - UOMO 2011
beloslab
Mr. Ankur Sharma - PDE good practices
Mr. Ankur Sharma - PDE good practices
beloslab
Konstantin Slisenko - Belarus Open Source Lab
Konstantin Slisenko - Belarus Open Source Lab
beloslab
Yuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 Launch
beloslab
Yuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practices
beloslab
Yuri Trukhin - Microsoft4students
Yuri Trukhin - Microsoft4students
beloslab
Yuri Trukhin - Windows Phone 7
Yuri Trukhin - Windows Phone 7
beloslab
Pavel Rumantsev - Java Script
Pavel Rumantsev - Java Script
beloslab
Sergey Gavruk - Mix11
Sergey Gavruk - Mix11
beloslab
Pavel Rumantsev - Html5
Pavel Rumantsev - Html5
beloslab
Aleksei Gomza - ASP.NET MVC3 data processing
Aleksei Gomza - ASP.NET MVC3 data processing
beloslab
Aleksei Gomza - Web-applications and ASP
Aleksei Gomza - Web-applications and ASP
beloslab
Sergey Gavruk - WebMatrix
Sergey Gavruk - WebMatrix
beloslab
Mehr von beloslab
(14)
Mr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo camp
Mr. Keil Werner - UOMO 2011
Mr. Keil Werner - UOMO 2011
Mr. Ankur Sharma - PDE good practices
Mr. Ankur Sharma - PDE good practices
Konstantin Slisenko - Belarus Open Source Lab
Konstantin Slisenko - Belarus Open Source Lab
Yuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 Launch
Yuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practices
Yuri Trukhin - Microsoft4students
Yuri Trukhin - Microsoft4students
Yuri Trukhin - Windows Phone 7
Yuri Trukhin - Windows Phone 7
Pavel Rumantsev - Java Script
Pavel Rumantsev - Java Script
Sergey Gavruk - Mix11
Sergey Gavruk - Mix11
Pavel Rumantsev - Html5
Pavel Rumantsev - Html5
Aleksei Gomza - ASP.NET MVC3 data processing
Aleksei Gomza - ASP.NET MVC3 data processing
Aleksei Gomza - Web-applications and ASP
Aleksei Gomza - Web-applications and ASP
Sergey Gavruk - WebMatrix
Sergey Gavruk - WebMatrix
Konstantin slisenko - Spring Framework
1.
Обзор возможностей Inversion
of Control Аспектно-ориентированное программирование © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
2.
План презентации 1.
Общие сведения о Spring Framework 2. Возможности Spring Framework 3. Inversion of Control 4. Аспектно-ориентированное программирование 5. Hello World! (java + Spring) 6. Пример: Как великий князь в поход ходил © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
3.
1. Общие сведения
о Spring Framework Open Source Упрощает разработку enterpise-приложений (настройка, тестирование, …) Может применяться для web, десктопных, мобильных приложений. (Есть android версия) Платформы – Java, .Net (Spring.NET) Предоставляет богатый набор вспомогательных классов © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
4.
1. Общие сведения
о Spring Framework Официальный сайт Spring Framework: springsource.org © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
5.
1. Общие сведения
о Spring Framework © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
6.
2. Возможности Spring
Инверсия контроля (IoC) Аспектно-ориентированное программирование Spring – этоконтейнеробъектов, нет необходимости писать в коде new, вместо этого запрашиваем объекты у него Spring – это фреймворк, который содержит библиотеки для web, orm, security, aop, ioc, mail, remoting – он предоставляет интерфейсы для абстрагирования от этих сервисов © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
7.
3. Inversion of
Control public class MailService { public void send(String from, String to, String subject, String text) { // выполняем отправку письма } } public class BasketService { private MailService mail; public BasketService() { mail = new MailService(); } public void makeOrder() { // Сохраняем заказанные товары // Отправляем письмо mail.send(“shop@shop.com”, “customer@customer.com”, “Заказ принят”); } } © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
8.
3. Inversion of
Control В системе много объектов, которые определённым образом между собой связаны (например, вызывают друг друга) Если мы указываем зависимости в коде: - трудно тестировать классы по отдельности - трудно подменять классыдля разных конфигураций Мы можем выделить интерфейс и соединить объекты с помощью set-метода © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
9.
3. Inversion of
Control public interface MailService { public void send(String from, String to, String subject, String text) ; } public class MailServiceImpl implements MailService{ public void send(String from, String to, String subject, String text) { // выполняем отправку письма } } public class BasketService { private MailService mail; public void setMailService(MailService mail) { this.mail = mail; } public void makeOrder() { // Сохраняем заказанные товарыи отправляем письмо mail.send(“shop@shop.com”, “customer@customer.com”, “Заказ принят”); } } © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
10.
3. Inversion of
Control В любом случае мыдолжны установить зависимости в коде и указывать конкретные реализации классов Решение проблемы – переложить работу по установлению зависимостей на Spring © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
11.
3. Inversion of
Control Spring – это контейнер, который: Управляет жизненным циклом объектов Позволяет настроить, как он будет их выдавать: - синглетон - новый объект - пул объектов Позволяет настроить их автоматическое удаление Позволяет задать зависимости между ними (инжекция зависимостей) Spring IoC – основной модуль Spring © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
12.
3. Inversion of
Control Возможна инжекция зависимостей для любых типов: - коллекции (List, Map, Set, Properties) - пользовательские классы - примитивные и стандартные типы Правила создания объектов и зависимостей между ними описываются в конфигураци-онномxml-файле © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
13.
3. Inversion of
Control Преимущества: Мы можем не указывать конкретные реализации классов (например, для тестов использовать заглушку MailServiceMock, в реальных условиях использовать настоящий класс MailServiceImpl) Нет необходимости самостоятельно управлять жизненным циклом объектов При замене модулей не нужно перекомпилировать приложение т.к. модули соединяются декларативно © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
14.
3. Inversion of
Control Контейнеров может быть несколько Процедура создания контейнера зачастую занимает много времени – не рекомен-дуется создавать много контейнеров Обычно создаётся один контейнер для одного приложения © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
15.
4. Аспектно-ориентированное программирование
Существует такая функциональность, которая не относится к каким-либо модулям системы Логирование Проверка прав доступа Вызов метода в рамках транзакции С помощью АОП мы можем подключаться в определённые места программы и вставлять нужный нам код © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
16.
4. Аспектно-ориентированное программирование
Классы, которые описывают такой функционал, называются аспектами В Spring существует своя реализация АОП Она подходит для реализации задач средней сложности Для более сложных - разработчики Spring рекомендуют использовать библиотеку AspectJ © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
17.
5. Hello World!
public interface Hello { public void sayHello(); } public class HelloImpl implements Hello { private String name; public void setName(String name) { this.name = name; } public void sayHello() { System.out.println(“Hello, ” + name); } } public class HelloWorld { public static void main(String args[]) { ApplicationContext context = new ClassPathApplicationContext(“spring-beans.xml”); Hello hello = (Hello) context.getBean(“hello”); hello.sayHello(); } } © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
18.
5. Hello World!
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns=http://www.springframework.org/schema/beansxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="hello" class=“package.HelloImpl"> <property name=“name" value=“Karl Gerdeler" /> </bean> </beans> © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
19.
5. Пример: Как
великий князь в поход ходил Задача: Написать класс великого князя, который поведёт войско в поход на Польшу © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
20.
5. Пример: Как
великий князь в поход ходил public class ВеликийКнязь{ private String имя; private ПоходНаПольшу поход; public ВеликийКнязь(String имя) { this.имя = имя; поход = new ПоходНаПольшу(); } public Богатство пойтиВПоход() throws НеПолучилосьException { return поход.сходить(); } } © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
21.
5. Пример: Как
великий князь в поход ходил public class ПоходНаПольшу{ public ПоходНаПольшу() {} public Богатство пойтиВПоход() throws НеПолучилосьException { Богатство бг = null; побитьВсех(); бг = забратьБогатство(); return бг; } } © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
22.
5. Пример: Как
великий князь в поход ходил public class КнязьTest { @Test public void тестПойтиВПоход() throws НеПолучилосьException{ ВеликийКнязь князь = new ВеликийКнязь(“Витовт”); Богатство бг = князь.пойтиВПоход(); AssertNotNull(бг); AssertTrue(бг.свободноКонвертируемое()); } } © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
23.
24.
При этом незаметно
тестируется класс ПоходНаПольшу
25.
Если при такой
конфигурации написать тест для класса поход, то два теста будут тестировать одно и то же
26.
В классе поход
может быть ошибка
27.
Что делать, если
мы хотим пойти в другой поход, например на Москву?Решение – создать интерфейс и использовать IoC В этом случае мы можем сделать поход загрушкой © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
28.
5. Пример: Как
великий князь в поход ходил public interface Поход { public Богатство пойтиВПоход() throws НеПолучилосьException; } Public class ПоходНаПольшуimplements Поход { public Богатство пойтиВПоход() throws НеПолучилосьException { Богатство бг = null; // получение богатства return бг; } } public class ВеликийКнязь{ private String имя; private Поход поход; public ВеликийКнязь(String имя) { this.имя = имя; } public void setПоход(Поход поход) { this.поход = поход; } public Богатство пойтиВПоход() throws НеПолучилосьException { return поход.сходить(); } } © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
29.
5. Пример: Как
великий князь в поход ходил <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=http://www.springframework.org/schema/beansxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id=“quest“class=“package.ПоходНаПольшу"> </bean> <bean id=“prince" class=“package.ВеликийКнязь"> <constructor-argvalue=“Витовт" /> <property name=“поход" ref=“quest" /> </bean> </beans> © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
30.
5. Пример: Как
великий князь в поход ходил public class ВеликийКнязьApp{ public static void main() throws НеПолучилосьException { ApplicationContext context = new ClassPathApplicationContext(“spring-beans.xml”); ВеликийКнязькнязь = (ВеликийКнязь) context.getBean(“prince”); князь.пойтиВПоход(); } } В реальных проектах князь может быть менеджером транзакций, сервисом удалённого взаимодействия, и т.д. © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
31.
Спасибо за внимание!
Вопросы? © Belarus Open Source Laboratory, TechDayДокладчик: Константин Слисенко, JazzTeam
Jetzt herunterladen