🗊 Презентация Spring Core. Spring AOP

Нажмите для полного просмотра!
Spring Core. Spring AOP, слайд №1 Spring Core. Spring AOP, слайд №2 Spring Core. Spring AOP, слайд №3 Spring Core. Spring AOP, слайд №4 Spring Core. Spring AOP, слайд №5 Spring Core. Spring AOP, слайд №6 Spring Core. Spring AOP, слайд №7 Spring Core. Spring AOP, слайд №8 Spring Core. Spring AOP, слайд №9 Spring Core. Spring AOP, слайд №10 Spring Core. Spring AOP, слайд №11 Spring Core. Spring AOP, слайд №12 Spring Core. Spring AOP, слайд №13 Spring Core. Spring AOP, слайд №14 Spring Core. Spring AOP, слайд №15 Spring Core. Spring AOP, слайд №16 Spring Core. Spring AOP, слайд №17 Spring Core. Spring AOP, слайд №18 Spring Core. Spring AOP, слайд №19 Spring Core. Spring AOP, слайд №20 Spring Core. Spring AOP, слайд №21 Spring Core. Spring AOP, слайд №22 Spring Core. Spring AOP, слайд №23 Spring Core. Spring AOP, слайд №24 Spring Core. Spring AOP, слайд №25 Spring Core. Spring AOP, слайд №26 Spring Core. Spring AOP, слайд №27 Spring Core. Spring AOP, слайд №28 Spring Core. Spring AOP, слайд №29 Spring Core. Spring AOP, слайд №30 Spring Core. Spring AOP, слайд №31 Spring Core. Spring AOP, слайд №32 Spring Core. Spring AOP, слайд №33 Spring Core. Spring AOP, слайд №34

Содержание

Вы можете ознакомиться и скачать презентацию на тему Spring Core. Spring AOP. Доклад-сообщение содержит 34 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Spring Core Spring AOP
Описание слайда:
Spring Core Spring AOP

Слайд 2


AOP :: Пример Рассмотрим метод получения пользователя по id: public class UserService { public UserDTO getUser(Integer id) { return...
Описание слайда:
AOP :: Пример Рассмотрим метод получения пользователя по id: public class UserService { public UserDTO getUser(Integer id) { return userDAO.getUser(id); } }

Слайд 3


AOP :: Пример Рассмотрим метод получения пользователя по id: public class UserService { public UserDTO getUser(Integer id) { return...
Описание слайда:
AOP :: Пример Рассмотрим метод получения пользователя по id: public class UserService { public UserDTO getUser(Integer id) { return userDAO.getUser(id); } } Добавим логгирование: public UserDTO getUser(Integer id) { log.debug("Call method getUser with id " + id); UserDTO user = userDAO.getUser(id); log.debug("User info is: " + user.toString()); return user; }

Слайд 4


AOP :: Пример Добавим обработку исключений: public UserDTO getUser(Integer id) throws ServiceException{ log.debug("Call method getUser with id...
Описание слайда:
AOP :: Пример Добавим обработку исключений: public UserDTO getUser(Integer id) throws ServiceException{ log.debug("Call method getUser with id " + id); UserDTO user = null; UserDTO user = userDAO.getUser(id); try { user = userDAO.getUser(id); } catch(SQLException e) { throw new ServiceException(e); } log.debug("User info is: " + user.toString()); return user; }

Слайд 5


AOP :: Пример Добавим проверку прав пользователя: public UserDTO getUser(Integer id) throws ServiceException, AuthException{ if...
Описание слайда:
AOP :: Пример Добавим проверку прав пользователя: public UserDTO getUser(Integer id) throws ServiceException, AuthException{ if (!SecurityContext.getUser().hasRight("getUser")) { throw new AuthException("Permission Denied"); } log.debug("Call method getUser with id " + id); UserDTO user = null; UserDTO user = userDAO.getUser(id); try { user = userDAO.getUser(id); } catch(SQLException e) { throw new ServiceException(e); } log.debug("User info is: " + user.toString()); return user; }

Слайд 6


AOP :: Пример Добавляем кэширование результатов работы: public UserDTO getUser(Integer id) throws ServiceException, AuthException { … try { if...
Описание слайда:
AOP :: Пример Добавляем кэширование результатов работы: public UserDTO getUser(Integer id) throws ServiceException, AuthException { … try { if (cache.contains(cacheKey)) { user = (UserDTO) cache.get(cacheKey); } else { user = userDAO.getUser(id); cache.put(cacheKey, user); } } catch(SQLException e) { throw new ServiceException(e); } log.debug("User info is: " + user.toString()); return user; }

Слайд 7


AOP :: Пример Что мы получаем: Большой объем сервисного кода Вместо одной строки мы получили 16. И это количество продолжает расти... Виды...
Описание слайда:
AOP :: Пример Что мы получаем: Большой объем сервисного кода Вместо одной строки мы получили 16. И это количество продолжает расти... Виды ортогональной функциональности Логгирование Обработка исключений Транзакции Кэширование Проверка прав пользователя и многое другое... Минусы сервисного кода в основном коде: Растет объем кода Сложнее поддерживать Дублирование кода Решение: использовать аспекты Вынести ортогональную функциональность в отдельные классы – аспекты

Слайд 8


Как работают аспекты
Описание слайда:
Как работают аспекты

Слайд 9


AOP :: Введение Aspect Oriented Programming (AOP) – аспектно-ориентированное программирование АОП предоставляет средства для реализации ортогональной...
Описание слайда:
AOP :: Введение Aspect Oriented Programming (AOP) – аспектно-ориентированное программирование АОП предоставляет средства для реализации ортогональной (crosscutting) функциональности

Слайд 10


AOP :: Введение Как «ортогональную» бизнес-логику можно реализовать в СУРБД?
Описание слайда:
AOP :: Введение Как «ортогональную» бизнес-логику можно реализовать в СУРБД?

Слайд 11


AOP :: Введение Пример ортогонального логгирования с использованием триггеров СУРБД: /* Триггеры на уровне таблицы */ CREATE OR REPLACE TRIGGER...
Описание слайда:
AOP :: Введение Пример ортогонального логгирования с использованием триггеров СУРБД: /* Триггеры на уровне таблицы */ CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger AFTER UPDATE ON district BEGIN INSERT INTO info VALUES ('table "district" has changed'); END;

Слайд 12


AOP :: Пример адвайса логгирования @Aspect public class LoggingAspect { private Logger logger = Logger.getLogger(LoggingAspect.class.getName());...
Описание слайда:
AOP :: Пример адвайса логгирования @Aspect public class LoggingAspect { private Logger logger = Logger.getLogger(LoggingAspect.class.getName()); @Around("execution(* *.*User(..))") public Object log (ProceedingJoinPoint thisJoinPoint) throws Throwable { String methodName = thisJoinPoint.getSignature().getName(); Object[] methodArgs = thisJoinPoint.getArgs(); logger.info("Call method " + methodName + " with args " + methodArgs); Object result = thisJoinPoint.proceed(); logger.info("Method " + methodName + " returns " + result); return result; } }

Слайд 13


AOP :: Пример адвайса логгирования
Описание слайда:
AOP :: Пример адвайса логгирования

Слайд 14


AOP :: Пример адвайса логгирования public interface UserDao { UserDTO getUser(int id); } public class UserDaoImpl implements UserDao { public UserDTO...
Описание слайда:
AOP :: Пример адвайса логгирования public interface UserDao { UserDTO getUser(int id); } public class UserDaoImpl implements UserDao { public UserDTO getUser(int id) { if (null != userDaoMap.get(id)) { return userDaoMap.get(id); } UserDTO user = new UserDTO(id); userDaoMap.put(id, user); return user; } }

Слайд 15


AOP :: Пример
Описание слайда:
AOP :: Пример

Слайд 16


AOP :: Введение Работа с DAO без IoC и AOP Работа с DAO с IoC, но без AOP
Описание слайда:
AOP :: Введение Работа с DAO без IoC и AOP Работа с DAO с IoC, но без AOP

Слайд 17


AOP :: Введение Работа с DAO с IoC и AOP
Описание слайда:
AOP :: Введение Работа с DAO с IoC и AOP

Слайд 18


AOP :: Введение Работа с DAO с IoC и AOP
Описание слайда:
AOP :: Введение Работа с DAO с IoC и AOP

Слайд 19


AOP :: Введение
Описание слайда:
AOP :: Введение

Слайд 20


AOP :: Основные понятия
Описание слайда:
AOP :: Основные понятия

Слайд 21


Активация AOP Weaving (связывание) – процесс применения аспекта к целевому объекту для создания нового прокси-объекта. Для осуществления связывания...
Описание слайда:
Активация AOP Weaving (связывание) – процесс применения аспекта к целевому объекту для создания нового прокси-объекта. Для осуществления связывания использует две дополнительные зависимости: aspectjrt.jar aspectjweaver.jar Также необходимо инициировать создание динамических прокси в файле конфигурации:

Слайд 22


AOP :: Язык срезов (pointcut)
Описание слайда:
AOP :: Язык срезов (pointcut)

Слайд 23


AOP :: Язык срезов (pointcut)
Описание слайда:
AOP :: Язык срезов (pointcut)

Слайд 24


AOP :: Срез
Описание слайда:
AOP :: Срез

Слайд 25


AOP :: типы адвайсов @Around advice – выполняется перед и после joinpoint Самый мощный из всех адвайсов...
Описание слайда:
AOP :: типы адвайсов @Around advice – выполняется перед и после joinpoint Самый мощный из всех адвайсов @Around("@annotation(com.luxoft.springaop.example2.Log)") public Object log (ProceedingJoinPoint thisJoinPoint) throws Throwable { String methodName = thisJoinPoint.getSignature().getName(); Object[] methodArgs = thisJoinPoint.getArgs(); logger.info("Call method " + methodName + " with args " + methodArgs); Object result = thisJoinPoint.proceed(); logger.info("Method " + methodName + " returns " + result); return result; }

Слайд 26


Примеры использования AOP Логгирование Проверки безопасности Управление транзакциями Обработка исключений Проверка прав пользователя Профилирование
Описание слайда:
Примеры использования AOP Логгирование Проверки безопасности Управление транзакциями Обработка исключений Проверка прав пользователя Профилирование

Слайд 27


AOP :: группировка аспектов
Описание слайда:
AOP :: группировка аспектов

Слайд 28


AOP :: Комбинирование срезов
Описание слайда:
AOP :: Комбинирование срезов

Слайд 29


AOP :: Типы адвайсов Может решать, исполнять ли joinpoint или вернуть собственное значение:...
Описание слайда:
AOP :: Типы адвайсов Может решать, исполнять ли joinpoint или вернуть собственное значение: @Around("com.luxoft.example.SystemArchitecture.businessService()") public Object accessRightsCheck(ProceedingJoinPoint pjp) throws Throwable { if (currentUser.hasRights()) { return pjp.proceed(); } else { throw new AuthorizationException(); } return null; }

Слайд 30


AOP :: Использование @AfterThrowing @Aspect public class AfterThrowingExample { @AfterThrowing(...
Описание слайда:
AOP :: Использование @AfterThrowing @Aspect public class AfterThrowingExample { @AfterThrowing( pointcut="com.luxoft.example.SystemArchitecture.dataAccessOperation()", throwing="ex") public void doRecoveryActions(DataAccessException ex) { // ... } } Нет возможности вернуться к вызываемому методу или продолжить обработку на следующей строке Если здесь обрабатывается исключение, это не помешает ему «всплыть» в цепи

Слайд 31


AOP :: Обзор типов адвайсов @Before – выполняется перед joinpoint Вызов joinpoint можно отменить, только выдав исключение @Around – выполняется перед...
Описание слайда:
AOP :: Обзор типов адвайсов @Before – выполняется перед joinpoint Вызов joinpoint можно отменить, только выдав исключение @Around – выполняется перед и после joinpoint @AfterReturning – после успешного выполнения joinpoint, например, когда метод выполнился, не выдав исключение @AfterThrowing – в случае выдачи исключения в joinpoint @After – в любом случае после выполнения joinpoint

Слайд 32


AOP :: Выстраивание цепочки аспектов
Описание слайда:
AOP :: Выстраивание цепочки аспектов

Слайд 33


AOP :: @Order Порядок выполнения аспектов можно задать с помощью аннотации @Order: @Aspect @Order(1) public class AspectA {...
Описание слайда:
AOP :: @Order Порядок выполнения аспектов можно задать с помощью аннотации @Order: @Aspect @Order(1) public class AspectA { @Before("............") public void doIt() {} } @Aspect @Order(2) public class AspectB { @Before(".............") public void doIt() {} } Порядок адвайсов в аспекте определяется его порядком в исходном коде аспекта.

Слайд 34


Упражнение
Описание слайда:
Упражнение



Теги Spring Core
Похожие презентации
Mypresentation.ru
Загрузить презентацию