Содержание
- 2. AOP :: Пример Рассмотрим метод получения пользователя по id: public class UserService { public UserDTO getUser(Integer
- 3. AOP :: Пример Рассмотрим метод получения пользователя по id: public class UserService { public UserDTO getUser(Integer
- 4. AOP :: Пример Добавим обработку исключений: public UserDTO getUser(Integer id) throws ServiceException{ log.debug("Call method getUser with
- 5. AOP :: Пример Добавим проверку прав пользователя: public UserDTO getUser(Integer id) throws ServiceException, AuthException{ if (!SecurityContext.getUser().hasRight("getUser"))
- 6. AOP :: Пример Добавляем кэширование результатов работы: public UserDTO getUser(Integer id) throws ServiceException, AuthException { …
- 7. AOP :: Пример Что мы получаем: Большой объем сервисного кода Вместо одной строки мы получили 16.
- 8. Как работают аспекты Выполнение действия до вызова метода Вызываем метод АСПЕКТ: Выполнение действия после вызова метода
- 9. AOP :: Введение Aspect Oriented Programming (AOP) – аспектно-ориентированное программирование АОП предоставляет средства для реализации ортогональной
- 10. AOP :: Введение Как «ортогональную» бизнес-логику можно реализовать в СУРБД?
- 11. AOP :: Введение Пример ортогонального логгирования с использованием триггеров СУРБД: /* Триггеры на уровне таблицы */
- 12. AOP :: Пример адвайса логгирования @Aspect public class LoggingAspect { private Logger logger = Logger.getLogger(LoggingAspect.class.getName()); @Around("execution(*
- 13. AOP :: Пример адвайса логгирования xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
- 14. AOP :: Пример адвайса логгирования public interface UserDao { UserDTO getUser(int id); } public class UserDaoImpl
- 15. AOP :: Пример class UserDaoImpl implements UserDao { public UserDTO getUser(Integer id) { return userDAO.getUser(id); }
- 16. AOP :: Введение Работа с DAO без IoC и AOP Работа с DAO с IoC, но
- 17. AOP :: Введение Работа с DAO с IoC и AOP Адвайс логгирования UserService UserDAOProxy Контекст приложения
- 18. AOP :: Введение Работа с DAO с IoC и AOP UserDAOProxy Контекст приложения UserDAO DAO DAO
- 19. AOP :: Введение В Spring Framework AOP реализуется с помощью создания прокси-объекта на интересующий вас сервис.
- 20. AOP :: Основные понятия
- 21. Активация AOP Weaving (связывание) – процесс применения аспекта к целевому объекту для создания нового прокси-объекта. Для
- 22. AOP :: Язык срезов (pointcut) execution – определяет срез на основе сигнатуры метода еxecution(@CustomAnnotation? modifiers-pattern? ret-type-pattern
- 23. AOP :: Язык срезов (pointcut) execution (void Test.foo(int, String)) – связывание с методом foo, класса Test,
- 24. AOP :: Срез this(com.package.InterfaceName) – определяет точки соединения для всех методов в классах, реализующих интерфейс com.package.InterfaceName
- 25. AOP :: типы адвайсов @Around advice – выполняется перед и после joinpoint Самый мощный из всех
- 26. Примеры использования AOP Логгирование Проверки безопасности Управление транзакциями Обработка исключений Проверка прав пользователя Профилирование
- 27. AOP :: группировка аспектов @Aspect public class SystemArchitecture { @Pointcut("within(com.xyz.someapp.web..*)") public void inWebLayer() {} @Pointcut("within(com.xyz.someapp.service..*)") public
- 28. AOP :: Комбинирование срезов Комбинирование pointcut выражений: @Pointcut("execution(public * *(..))") private void anyPublicOperation() {} @Pointcut("within(com.xyz.someapp.trading..*") private
- 29. AOP :: Типы адвайсов Может решать, исполнять ли joinpoint или вернуть собственное значение: @Around("com.luxoft.example.SystemArchitecture.businessService()") public Object
- 30. 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 можно отменить, только выдав
- 32. AOP :: Выстраивание цепочки аспектов getUser() getUser() getUser() getUser() логгирование обработка исключений Проверка безопасности dao.getUser() 1
- 33. AOP :: @Order Порядок выполнения аспектов можно задать с помощью аннотации @Order: @Aspect @Order(1) public class
- 35. Скачать презентацию