piątek, 3 czerwca 2011

Testowanie pointcut-ów w springu.

Witam. Pisałem już kilka postów o aspektach w springu. Testowałem ich działanie poprzez sysout-y. Dziś postanowiłem opisać jak można napisać test jednostkowy sprawdzający działanie pointcut-a. Pomysł zaczerpnąłem od kolegi z pracy - Darka Kaczyńskiego - ukłon w jego stronę.
Dodatkowo pokażę jak skorzystać z JavaConfig - dla tych, którzy mają dość xml-a (można postawić springa bez linijki xml-a ;-) ).

środa, 25 maja 2011

Spring singleton vs prototype scope.

Witam.
Dziś zaprezentuję jak pracować z różnymi (singleton, prototype) zasięgami beanów w springu. Jak wiemy domyślnie wszystko w springu jest singletonem. Wynika z tego rzecz oczywista - beany nie mogą być stanowe. A co jeśli potrzebujemy stanowego beana ? Mamy do dyspozycji scope=prototype.

niedziela, 22 maja 2011

SOAP za pomocą Apache CXF oraz springa.

Witam po długiej przerwie. W ostatnich miesiącach zmieniłem pracę i w zabieganiu nie miałem czasu na blogowanie. Dziś zajmę się zaprezentowaniem jak postawić soap-a korzystając z cxf-a i oczywiście spring-a. Projekt ze źrodłami można pobrać stąd.
Do poczytania czym jest SOAP odsyłam do wiki oraz dokumentacji JAX-WS.

Zacznijmy od części serwerowej. Tworzenie web serwisu można zacząć albo od napisania WSDL-a (contract first) albo od napisania interfejsu serwisu i wygenerowaniu WSDL-a (contract last). Skorzystam z contract last. Mój testowy interfejs wygląda następująco:
public interface HelloSOAP {
    String sayHello(String name);
}

piątek, 21 stycznia 2011

Transakcyjność w springu

Czołem.
Dziś zaprezentuję jak w springu skonfigurować transakcyjność. Najpierw przypomnijmy kilka pojęć.

Propagacja transakcji polega na zdefiniowaniu zachowania transakcji przy wywołaniu metody wewnątrz innej transakcyjnej metody.

Jeśli metoda A jest uruchomiona w traksakcji to co ma się wydarzyć, gdy wywoła ona metodę B, która również jest transakcyjna? Czy transakcja powinna się propagować czy nie? Czy może B powinna być uruchomiona w swojej transakcji? Jest to konfigurowalne. Spójrzmy na tabelę z opisem 3 podstawowych poziomów propagacji: