Spring z KNI – programowanie aspektowe
Wczoraj zasiedliśmy do kolejnych zmagań z javowym frameworkiem Spring. Tym razem Dawid przedstawił nam ogólną ideę programowania aspektowego dostępną w Springu. Jest to jeden ze sposobów programowania, który na pewno ma tylu samo zwolenników co przeciwników. Bardzo upraszczając można tą metodę przedstawić tak, że umożliwia ona wywoływanie określonych funkcji przed lub po naszej metodzie bez jawnego pisania ich wywołań. Wszystko konfigurowane jest na poziomie beanów dzięki czemu pisana przez nas funkcja nie musi posiadać kodu wywołującego np. logowanie informacji o tym, że jest wykonywana, dzięki czemu w jej wnętrzu mamy kod odpowiedzialny jedynie za jedną, konkretną funkcjonalność. Zaletą tego rozwiązania jest, że nasze funkcje stają się krótsze, pozbywamy się z kodu wywołań funkcji pełniących poboczne zadania, jak np. zapisywanie informacji o błędach i działaniu systemu, lub sprawdzanie przed uruchomieniem jakiejś funkcjonalności czy użytkownik jest zalogowany. Takie rzeczy często potrafią stanowić większość kodu we wszelkich wywołaniach funkcji, dlatego przeniesienie informacji o ich użyciu do pliku XML pozwala zwiększyć czystość kodu. Jednak ta metoda, ma też wady. Przykładowo ktoś dołączający do projektu nie widzi od razu, że jeśli wywoła jakąś metodę to automatycznie spowoduje to również wywołanie kilku innych funkcji, przez co może mieć problem zarówno z lokalizowaniem błędów jak i ze zrozumieniem działania systemu.
W trakcie tych warsztatów udało mi się wstępnie zapoznać ze środowiskiem IntelliJ, ponieważ projekt udostępniony przez Dawida został właśnie w tym IDE napisany. Tak więc odniosłem kolejną korzyść. Przy okazji przekonałem się, że w przeciwieństwie do Eclipsa tutaj wszystko zadziałało od razu i działało aż do końca warsztatów :D
Na koniec jeszcze materiały, z których korzystaliśmy w postaci prezentacji i przykładowego kodu:
Prezentacja -> Programowanie aspektowe – prezentacja
IntelliJ to zło ;) Choć kilka zalet ma :P
Przynajmniej IntelliJ zadziałał od razu i nie wywalał mi błędów przy kompilacji nawet podstawowej składni javy tak, jak Eclipse na poprzednich warsztatach :D