Projektowanie warstwy serwera Programowanie aspektowe.

Slides:



Advertisements
Podobne prezentacje
Projektowanie Aplikacji Komputerowych
Advertisements

Prawne i finansowe aspekty oświetlenia ulicznego i drogowego
Klasy abstrakcyjne i interfejsy
Java dla studentów II roku Wydziału Fizyki PW Przemysław Duda, 2012
Programowanie obiektowe
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Mapowanie dziedziczenia z UML do Java
Uwierzytelnianie i autoryzacja dostępu do portali
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
Szablony (wzorce) Przykład 1: Szablon klasy -
Licznik template<class Count_Type> class Count { public:
OOP - programowanie zorientowane obiektowo w VB.NET
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
Internet Communication Engine
Programowanie zorientowane aspektowo
Doskonalenie zarządzania usługami publicznymi i rozwojem w jednostkach samorządu lokalnego Projekt współfinansowany ze środków Unii Europejskiej w ramach.
Bartosz Walter Inżynieria oprogramowania Lecture XXX JavaTM – część II Bartosz Walter
Czyli jak testować w Eclipsie?
Czytanie, pisanie i rysowanie (czyli klasa I szkoły podstawowej)
Język Java Wielowątkowość.
Projektowanie warstwy serwera DisplayTag. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Projektowanie warstwy serwera Acegi. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projektowanie warstwy serwera Spring MVC - uzupełnienie.
Spring podstawy.
Projektowanie warstwy serwera Znaczniki jsp. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Projekt Z kulturą na plus Nr POKL /11 Projekt Z kulturą na plus Nr POKL /11 Projekt współfinansowany przez Unię Europejską
Wstęp do kontenerów IoC
Serializacja Serializacja pozwala zamienić obiekt na sekwencję bajtów, w sposób umożliwiający później wierne odtworzenie jego zawartości Inna nazwa to.
Test Doubles Adam Gabryś , v1.1,
»Spring Framework i nie tylko
Rozwój aplikacji przy wykorzystaniu ASP.NET
Programowanie urządzeń mobilnych – wykład IV
Message-Driven Bean.
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
WPROWADZENIE W ŚWIAT OBIEKTÓW
Java – coś na temat Klas Piotr Rosik
Seminarium problemowe
Implementacja systemu
Projekt i implementacja uogólnionego mechanizmu Java RMI
Rational Unified Process Implementacja Aleksandra Reiman, gr. I-52.
Programowanie obiektowe 2013/2014
dr Łukasz Murowaniecki T-109
Opracowanie ćwiczeń dotyczących zapewniania niezawodności baz danych na przykładzie Oracle Opiekun : dr inż. Agnieszka Landowska Dyplomant : Tomasz Krzyżanowski.
Programowanie sieciowe w Javie
Programowanie w języku C++
Praktyczne wykorzystanie wzorców projektowych MVC oraz IoC.
PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar.
Podstawy programowania
Spring Framework, Spring Boot
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Model współbieżności w Javie autor: Grzegorz Szuba.
Model współbieżności w Javie
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Paweł Starzyk Obiektowe metody projektowania systemów
Programowanie sieciowe w Javie Michał Kuciapski
Struktura systemu operacyjnego
Bartosz Pawlak Wiktor Paliwoda Bezpieczeństwo Systemów Operacyjnych IMAP vs POP.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
InMoST, Java – przykładowa aplikacja Bartosz.Michalik
Programowanie Obiektowe – Wykład 6
Wątki, programowanie współbieżne
(według:
Delegaty Delegat to obiekt „wiedzący”, jak wywołać metodę.
Programowanie Obiektowe – Wykład 2
AOP – Aspect Oriented Programming
Windows Workflow Foundation
BYDGOSKI FESTIWAL NAUKI
Zapis prezentacji:

Projektowanie warstwy serwera Programowanie aspektowe

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Programowanie aspektowe Metoda programowania mająca na celu modularyzację kodu i likwidację nakładających się problemów przekrojowych

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 AOP - przykłady zastosowania – logowanie, profilowanie, cacheowanie – autoryzacja i uwierzytelnianie – zarządzanie błędami, transakcje – sprawdzanie poprawności danych – rejestracja zmian

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 AOP – podstawowe pojęcia (I) Aspekt - wydzielona funkcjonalnie cześć programu, realizująca konkretne zadanie i koncentrująca sie tylko na problemie, którego dotyczy (np. logowanie, monitorowanie aplikacji, zarządzanie transakcjami). Podstawowe pojęcia AOP –aspekt (aspect): nazwany problem przekrojowy, inaczej to zbiory rad i punktów cięć/złączeń –rada (advice): dodatkowe zachowanie/czynność które zostaje zaninicjowane w punkcie złączenia, –punkt złączenia (join point): miejsce w strukturze wykonywania się aplikacji w którym powinna zostać zastosowana rada.

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 AOP – podstawowe pojęcia (II)

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 Spring AOP framework Rodzaje rad: –around advice: wykonuje się przed i po punkcie styku, ma możliwość przerwania przepływu kontroli programu przez zwrócenie własnej wartości lub wyjątku, –before advice: wykonuje się przed punktem styku, nie może zablokować przepływu kontroli programu, –throws advice: wykonuje się w momencie zgłoszenia wyjątku, –after returning advice: wykonuje się po poprawnym wykonaniu.

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 Around Advice Zgodność z AOP Alliance. Przechwycenie wywołania metody. Może zastąpić Before, After oraz Throws Advice. Możliwość zatrzymania wywołania metody. Możliwość zwrócenia innego obiektu niż przechwycona metoda.

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 Before Advice Wplatany przed wywołaniem metody. Zatrzymanie wykonania metody tylko poprzez wyrzucenie wyjątku. Ograniczone możliwości modyfikacji parametrów wywołania metody.

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9 After Advice Wplatany przy udanym powrocie z metody. Ograniczone możliwości zmiany wyniku zwróconego przez metodę.

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 Throws Advice Wplatany w przypadku wyrzucenia wyjątku przez metodę. Możliwość zaimplementowania różnych metod dla różnych wyjątków w jednej klasie. Brak możliwości zatrzymania wyjątku.

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 Implementacja (I) public class TracingBeforeAdvice implements MethodBeforeAdvice { public void before(Method m, Object[] args, Object target) throwsThrowable { System.out.println("Before method : "+ m.getName() ); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 Implementacja (II) public class TracingAfterAdvice implements AfterReturningAdvice { public void afterReturning(Object object, Method m, Object[] args, Object target) throwsThrowable { System.out.println("After method : "+ m.getName()); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 Konfiguracja (I) <bean id=proxybean" class="org.springframework.aop.framework.ProxyFactoryBean"> theTracingBeforeAdvisor theTracingAfterAdvisor

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 Konfiguracja (II) <bean id="theTracingBeforeAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">.*

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 Przykład public class TimeInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation method) throwsThrowable { long start = System.currentTimeMillis(); try {Objectresult= method.proceed(); return result; } finally { long end= System.currentTimeMillis(); long timeMs= end-start; System.out.println("Method: " + method.toString() + " took: " + timeMs+"ms."); }}}

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego public class MyAspect {..... }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu transfer(..))") private void my() {} execution target args

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 execution execution(public * *(..)) execution(* set*(..)) execution(* com.xyz.service.*.*(..)) execution(* com.xyz.service..*.*(..)) execution (public * dao.commons..*.update(..)))

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 @Around(ProceedingJoinPoint)

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu dao..*.get(..))") public Object applySecurity(ProceedingJoinPoint joinpoint) throws Throwable { logger.debug("Applying Security"); Object obj = joinpoint.proceed();..... return obj; }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 public class DataUpdateInterceptor *dao.commons..*.update(..)) || " + "execution(public *dao.commons..*.save(..)) ) && " + " target(dao.GenericDAO)") public void updateDataAspect(JoinPoint jp) { logger.debug("nastapila zmiana w danych"); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 Konfiguracja

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu @Target(ElementType.TYPE) Auditable { }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu @Target(ElementType.FIELD) NonAuditableField { }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 public class = true, length = 64) private String haslo;....

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 26 AudytInterceptor = Propagation.MANDATORY) public class AudytInterceptor extends EmptyInterceptor { private AuditLoggerService auditLoggerService;...

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 27 AudytInterceptor public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { if (entity.getClass().isAnnotationPresent(Auditable.class)) { auditLoggerService.logSave(entity, id, state, propertyNames, types); } return super.onSave(entity, id, state, propertyNames, types); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 28 AudytInterceptor public void onDelete(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { if (entity.getClass().isAnnotationPresent(Auditable.class)) { auditLoggerService.logDelete(entity, id); } super.onDelete(entity, id, state, propertyNames, types); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 29 Interceptor (III) <bean id="audytInterceptor" class="commons.interceptor.AudytInterceptor">