SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
AOP
AspectJ vs Spring AOP
Speaker: Курбатов Геннадий
Аспектно-ориентированное программирование
1. Что это такое и зачем оно нам??
2. Основные понятия AOP
3. AspectJ
4. Spring AOP
5. AspectJ & Spring AOP
http://www.slideshare.net/rohitsghatol/aspect-oriented-prog-with-aspectj-spring-aop
http://www.slideshare.net/rohitsghatol/aspect-oriented-prog-with-aspectj-spring-aop
Основные понятия AOP
- Aspect — класс аспекта
- Advice — когда будем выполнять
- Before
- After returning
- After throwing
- After (finally)
- Around
- Join point — где будем выполнять
- Pointcut — комбинация Join Point
- Introduction — изменяем структуру
AspectJ
AspectJ Runtime — необходимые классы, аннотации и т. д. для работы в runtime
compile "org.aspectj:aspectjrt:${aspectjVersion}"
AspectJ Tools — необходимые классы для компиляции аспектов
compile "org.aspectj:aspectjtools:${aspectjVersion}"
AspectJ Weaver - «сплетает» аспекты с java-классами в runtime
compile "org.aspectj:aspectjweaver:${aspectjVersion}"
http://www.slideshare.net/rohitsghatol/aspect-oriented-prog-with-aspectj-spring-aop
Аспект
Название среза
Указание, где применять
Аргументы
Возвращаемый тип
Совет
Срез точек выполнения
Изменение структуры
наследования
и реализации
Метод
Класс
Пакет
Примеры Pointcut
execution(public * *(..))
execution(* set*(..))
execution(* com.xyz.service.AccountService.*(..))
execution(* com.xyz.service.*.*(..))
execution(* com.xyz.service..*.*(..))
within(com.xyz.service.*)
within(com.xyz.service..*)
this(com.xyz.service.AccountService)
target(com.xyz.service.AccountService)
args(java.io.Serializable)
@annotation(org.springframework.transaction.annotation.Transactional)
Spring AOP
Implementing dynamic proxies – a comparison
Spring AOP APIs
public interface Pointcut {
ClassFilter getClassFilter();
MethodMatcher getMethodMatcher();
}
public interface ClassFilter {
boolean matches(Class clazz);
}
//Ограничение по методам
public interface MethodMatcher {
boolean matches(Method m, Class targetClass);
//мб использован, когда AOP proxy создан и не нужно
//больше выполнять метод invoke прокси
boolean isRuntime();
boolean matches(Method m, Class targetClass, Object[] args);
}
Некоторые из классов Pointcut
AspectJExpressionPointcut
AnnotationMatchingPointcut
JdkRegexpMethodPointcut
StaticMethodMatcherPointcut
public interface Advice {
}
public interface MethodInterceptor extends Interceptor {
Object invoke(MethodInvocation invocation) throws Throwable;
}
public interface MethodBeforeAdvice extends BeforeAdvice {
void before(Method method, Object[] args, Object target) throws Throwable;
}
public interface AfterReturningAdvice extends AfterAdvice {
void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable;
}
Advisor API
RegexpMethodPointcutAdvisor
AspectJPointcutAdvisor
DefaultPointcutAdvisor
AspectJ vs Spring AOP
Альтернативные реализации AOP в Java
JBoss AOP — jbossaop.jboss.org
Выпущен в 2004 как дополнение к среде сервера приложений JBoss
JAC - jac.ow2.org
AOP в других ЯП
PostSharp - для платформы .NET
Python — встроенные декораторы
JavaScript — реализация в виде оберток(а-ля proxy)
AspectC++ - www.aspectc.org
Aop. Kurbatov Gennadii. Dnevnik.ru
Aop. Kurbatov Gennadii. Dnevnik.ru

Contenu connexe

En vedette

Amaru ghar, pani, khorak
Amaru ghar, pani, khorakAmaru ghar, pani, khorak
Amaru ghar, pani, khorak
Kalahub
 

En vedette (16)

phylos
phylosphylos
phylos
 
Hearing the Call
Hearing the CallHearing the Call
Hearing the Call
 
Game of Luck!!!!
Game of Luck!!!!Game of Luck!!!!
Game of Luck!!!!
 
Universidades
Universidades Universidades
Universidades
 
Slideshare presentation
Slideshare presentationSlideshare presentation
Slideshare presentation
 
Presentation 2016
Presentation  2016Presentation  2016
Presentation 2016
 
Effective teaching of citizenship education in primary schools in ghana
Effective teaching of citizenship education in primary schools in ghanaEffective teaching of citizenship education in primary schools in ghana
Effective teaching of citizenship education in primary schools in ghana
 
Existing Campaign research
Existing Campaign researchExisting Campaign research
Existing Campaign research
 
HC PRECAST SYSTEM's Technical Property
HC PRECAST SYSTEM's Technical PropertyHC PRECAST SYSTEM's Technical Property
HC PRECAST SYSTEM's Technical Property
 
Amaru ghar, pani, khorak
Amaru ghar, pani, khorakAmaru ghar, pani, khorak
Amaru ghar, pani, khorak
 
наші досягнення та надбання 5-А клас
наші досягнення та надбання 5-А класнаші досягнення та надбання 5-А клас
наші досягнення та надбання 5-А клас
 
Dinâmica de grupo 1
Dinâmica de grupo   1Dinâmica de grupo   1
Dinâmica de grupo 1
 
Diseño de Estrategias de Mercadeo - Caso Empresa Nike
Diseño de Estrategias de Mercadeo - Caso Empresa NikeDiseño de Estrategias de Mercadeo - Caso Empresa Nike
Diseño de Estrategias de Mercadeo - Caso Empresa Nike
 
Презентація 7 в класу
Презентація 7 в класуПрезентація 7 в класу
Презентація 7 в класу
 
Prezentatsia 9 в
Prezentatsia 9 вPrezentatsia 9 в
Prezentatsia 9 в
 
Презентація «Синдром професійного вигорання педагога»
Презентація «Синдром професійного вигорання педагога»Презентація «Синдром професійного вигорання педагога»
Презентація «Синдром професійного вигорання педагога»
 

Aop. Kurbatov Gennadii. Dnevnik.ru