Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

AOP – Aspect Oriented Programming

Podobne prezentacje


Prezentacja na temat: "AOP – Aspect Oriented Programming"— Zapis prezentacji:

1 AOP – Aspect Oriented Programming

2 AOP – Aspect Oriented Programming
11/15/2018 AOP – Aspect Oriented Programming KArol Muszyński, PJWSTK HP_presentation_template

3 Agenda Wprowadzenie do tematu Hello World
11/15/2018 Agenda Wprowadzenie do tematu Hello World Implementacje. Dlaczego AspectWerkz 2.X !? Wykorzystanie AOP November 15, 2018 HP_presentation_template

4 11/15/2018 Idea AOP November 15, 2018 HP_presentation_template

5 AOP – podstawowe pojęcia
Pointcut (join point) – definiuje punkt w trakcie wykonywania programu Advice – definiuje część implementacji aspektu, która ma być wykonynana w momencie natrafienia na pointcut Aspect – jest złączeniem powyższych dwóch elementów Weaving – wplatanie aspektów w istniejący kod November 15, 2018

6 Punkty wplatania aspektów
method execution (wykonanie metody) method call (wywołanie metody) constructor execution (wykonanie konstruktora) constructor call (wywołanie konstruktora) field access (dostęp do pola) field modification (modyfikacja pola) catch handlers (przechwycenie wyjątku) static initialization (statyczna inicjalizacja klasy) November 15, 2018

7 Agenda Wprowadzenie do tematu Hello World
11/15/2018 Agenda Wprowadzenie do tematu Hello World Implementacje. Dlaczego AspectWerkz 2.X !? Wykorzystanie AOP November 15, 2018 HP_presentation_template

8 Hello World 1 – aop.xml <aspectwerkz>
<system id="samples"> <aspect class="MyAspects"> <pointcut name="methodsToLog" expression="execution(* examples.TraceMe*.*(..))"/> <advice name="logMethod(StaticJoinPoint)" type="around" bind-to="methodsToLog"/> <advice name="logBefore(StaticJoinPoint)" type="before" bind-to="methodsToLog"/> <advice name="logAfter(StaticJoinPoint)" type="after" bind-to="methodsToLog"/> </aspect> </system> </aspectwerkz> November 15, 2018

9 Hello World 1 – klasy public class TraceMe {
public static void main(String args[]) throws Throwable { TraceMe tm = new TraceMe (); tm.targetB(); tm.targetA(); } public void targetB() {} public void targetA() {} public static class MyAspects { public void logMethod(JoinPoint jp) { } public void logBefore(JoinPoint jp) { } public void logAfter(JoinPoint jp) { } November 15, 2018

10 Hello World 2 – klasa /* @Aspect(”perJVM”) */
public static class MyAspects { TraceMe*.*(..))”) */ Pointcut methodsPointCut; */ public void logMethod(JoinPoint jp) { } */ public void logBefore(JoinPoint jp) { } */ public void logAfter(JoinPoint jp) { } } November 15, 2018

11 Hello World 2 – aop.xml <aspectwerkz>
<system id="samples"> <aspect class="MyAspects"/> </system> </aspectwerkz> November 15, 2018

12 Hello World 3 (Java 5) – aspekty
@Aspect(”perJVM”) public static class MyAspects { @Expression(”execution(* TraceMe*.*(..))”) Pointcut methodsPointCut; @Around(”methodsPointCut”) public void logMethod(JoinPoint jp) { } @Before(”methodsPointCut”) public void logBefore(JoinPoint jp) { } @AfterFinally(”methodsPointCut”) public void logAfter(JoinPoint jp) { } } November 15, 2018

13 Agenda Wprowadzenie do tematu Hello World
11/15/2018 Agenda Wprowadzenie do tematu Hello World Implementacje. Dlaczego AspectWerkz 2.X !? Wykorzystanie AOP November 15, 2018 HP_presentation_template

14 Implementacje AOP Aspectj 1.2 - http://eclipse.org/aspectj
11/15/2018 Implementacje AOP Aspectj Jboss AOP AspectWerkz AspectWerkz 2.X RC 2 - November 15, 2018 HP_presentation_template

15 Dlaczego AspectWerkz 2.X !?
Nie trzeba wkompilowywać aspektów w źródła naszej aplikacji Hot deployment and undeployment of aspects AspectWerkz Extensible Aspect Container StaticJoinPoint vs. JoinPoint New annotation backend and Java 5 annotations support November 15, 2018

16 Architektura November 15, 2018

17 Benchmark Z aktualizowany benchmark November 15, 2018

18 Wydajność AspectWerkz 2.x
Since the weaver in AspectWerkz 2.X is compiling everything statically, meaning that the output of the weaver is code that is statically compiled and verified, spring (and any other framework) will benefit from that. Statically compiled code can be highly tuned and optimized and no reflection is needed. This means that we don't have to perform all the expensive plumbing needed in a reflective model. E.G.: No casting No boxing and unboxing of primitives No wrapping (and unwrapping) of parameters in an object array that needs to be allocated at each invocation (and maintained throughout the invocation flow) No reflective invocations November 15, 2018

19 Agenda Wprowadzenie do tematu Hello World
11/15/2018 Agenda Wprowadzenie do tematu Hello World Implementacje. Dlaczego AspectWerkz 2.0 !? Wykorzystanie AOP November 15, 2018 HP_presentation_template

20 Wykorzystanie i przyszłość AOP
AOP, a OOP Jeśli wydaje Ci się, że AOP jest idealnym rozwiązaniem Twojego problemu to znaczy, że źle do niego podchodzisz używając OOP Powstanie wzorców projektowych opartych na AOP SpringAOP i JBossAOP AOP jako narzędzie do debug-owania aplikacji Logowanie November 15, 2018

21 Linki November 15, 2018

22


Pobierz ppt "AOP – Aspect Oriented Programming"

Podobne prezentacje


Reklamy Google