Posts

Showing posts from October, 2016

Spring Security - jak to działa?

Postanowiłem poczytać i zaznajomić się z technologią Spring Security. Przedstawię Wam, wiedzę którą zdobyłem w sposób jaki ja bym chciał ją zdobyć. Mam nadzieję, że tym wpisem pomogę Wam zrozumieć jak działa spring security. Co to jest Spring Security i do czego służy? Spring Security to framework, który służy do zabezpieczenia aplikacji. Skupia się ona na warstwie samej aplikacji i zajmuje się dwoma zagadnieniami: uwierzytelnianiem (sprawdzenie kim jest użytkownik, czyli logowanie wszelkiego rodzaju) i autoryzowaniem (sprawdzeniem czy użytkownik ma prawa do zasobów (stron, plików, zapytań itd.)). Stał się bardzo popularny w rozwiązaniach biznesowych, ponieważ pozwalają na prostą i szybką konfigurację tej warstwy zabezpieczeń. Framework stale jest rozwijany i uzyskuje coraz to nowsze rozwiązania. W trakcie pisania tego wpisu posiada już kilkanaście gotowych rozwiązań. Jednocześnie umożliwia implementacje własnych rozwiązań. Do czego używać? Spring Security można używać do każdej ap

JavaFX, czyli pierwszy widok dla lifetimera

Image
Postanowiłem stworzyć prosty minutnik w celu zaprezentowania proces tworzenia GUI w technologii JavaFX. Od czego zacząć? Zaczynając pracę z JavaFX 8 wystarczy mieć JDK 1.8. Biblioteki są zawarte w narzędziach deweloperskich Javy. Klasa uruchomieniowa Klasa główna powinna rozszerzać klasę javafx.application.Application, która pozwala w łatwy sposób uruchomić samodzielną aplikację. W funkcji main wywołujemy metodę launch(String... args) z argumentami aplikacji. Klasa Application jest klasą abstrakcyjną z jedną metodą do zaimplementowania. W funkcji abstrakcyjnej start(Stage stage) piszemy początkowy kod naszej aplikacji. U mnie klasa wygląda następująco: Ustawiam ikonę do okna aplikacji. Następnie wywołuję klasę, która reprezentuje mi scene konfiguracji minutnika. Teraz przedstawię wygląd pliku fxml: Przedstawię co dokładnie zaimplementowałem. <?import java.lang.*?> <?import java.net.*?> <?import java.util.*?> <?import javafx.scene.*?> <?import javaf

JavaFx - co to takiego?

Szukając alternatywy dla swing'a do tworzenia GUI aplikacji desktopowych spotkałem JavaFX. Nazwa wydawała mi się znajoma, którą widziałem na różnych stronach oraz w netbeansie. Zawsze jednak myślałem, że to jakiś framework dla specjalnej platformy (np. jakiś android czy coś). Bardzo się jednak myliłem. Okazuje się, że sam Oracle uważa JavaFX za alternatywę do Swing'a i dlatego postanowiłem się bliżej przyjrzeć tej technologii. Po co w ogóle alternatywa? Przypuszczam, że każdy kto próbował pisać aplikacji w Swing'u, odczuł wrażenie, że robi masę niepotrzebnych rzeczy. Stworzenie prostego GUI zajmowało dużo czasu. Jednocześnie jak już coś się stworzyło to strach było poruszyć jedną kontrolką, żeby nie rozwaliło się całe GUI. Oczywiście dało się napisać to tak, aby strachu nie było. Tylko zajmowało to jeszcze więcej czasu. Swojego czasu używałem SWT/JFace. Muszę przyznać, że wolałem go od Swing'a. Rozkładanie kontrolek było bardziej intuicyjne, a obiekty pozwalały na le

Spring Data JPA - kontynuacja aplikacji lifetimer

Kontynuujmy aplikacje z poprzedniego wpisu licznik życia . Dodamy do niego połączenie z bazą danych. Wykorzystamy do tego bazę h2, HikariDataSource, Hibernate i tytułowy JPA Spring Data. Pokażę i wytłumaczę jak to działa w praktyce z uwzględnieniem teorii na ten temat. Proponuję zajrzeć do mojego poprzedniego wpisu w którym przeczytacie jak działają warstwy połączenia z bazą danych aplikacji Java . W celu prezentacji stworzę osobny projekt, który będzie zaczątkiem do aplikacji samodzielnej. Dołączę do niego poprzedni projekt, który będzie służył za logikę aplikacji. Efekt ten zyskuje dodając do pom'a dane o projekcie. Grupa oraz wersja jest identyczna jak w nowym projekcie. Różnią się jedynie nazwa projektu (artifactId). Wykonuję to poniższym fragmentem pliku: <dependency> <groupId>${project.groupId}</groupId> <artifactId>lifetimer</artifactId> <version>${project.version}</version> </dependency> Zajmijmy się teraz sam

Połączenie bazy danych z aplikacją Java

Postanowiłem trochę przybliżyć temat połączenia aplikacji Javowych z bazą danych. Aktualnie dużo osób w internecie szuka rozwiązań, bo coś im nie działa. Problem leży w tym, że dużo programistów nawet nie wie jak to powinno działać. Powiedzieć można, że "automagicznie" tworzą się obiekty z bazy i w drugą stronę. Tak mówię już o obiektach, ponieważ teraz w erze hibernate, a nawet spring data jpa, nikt nawet nie zastanawia się jak zwracane są dane. Wystarczy przekopiować działającą konfiguracje i wszystko gotowe. Połączenie z bazą danych, czyli JDBC. JDBC (Java DataBase Connectivity) jest to API do komunikacji aplikacji z bazami danych. Wszyscy pewnie zauważyli, że to jest interfejs. Konkretną implementację (zwaną czasem sterownikiem) trzeba szukać pod bazę danych, którą chcemy wykorzystać. Na co pozwala JDBC? Posiadając sterownik do bazy możemy: połączyć się z nią, wykonać na niej zapytanie, obsłużyć tranzakcyjność. Zrobić możemy, na tym etapie, już wszy

Mockito w akcji, czyli wykorzystanie frameworka do lifetimera

Napiszemy sobie serwis do obsługi czasu, będziemy go dodawać do repozytorium. Nie zdecydowałem jeszcze jaki nośnik pamięci to będzie dlatego do wytestowania wykorzystamy framework Mockito. Jednocześnie niektóre czasy będą się składały na czasy ogólniejsze. Zacznijmy od stworzenia atrapy obiektu interfejsu Repository. Interfejs na razie jest pusty ponieważ nie wiem jakie metody będziemy potrzebować. Wykorzystamy do tego adnotację @Mock, ktory działa na zasadzie Dependency Injection. Następnie utworzymy obiekt naszego serwisu. Obiekty tego typu z założenia nie powinny przechowywać stanu wewnętrznego. Wykorzystując to stworzymy jeden obiekt dla wszystkich testów. Potrzebujemy jednocześnie, żeby stworzony w teście Mock został wstrzyknięty do naszej klasy serwisowej. Używamy do tej czynności adnotacji @InjectMocks. Ok. Mamy już stworzone puste obiekty. Chcielibyśmy jednak, aby coś one robiły. Bierzmy się więc do roboty. Napiszmy test, że wraz z użyciem w serwisie metody "add"