Z czego warto skorzystać żeby nie klepać w kółko tego samego kodu.
Pisanie kodu powielanego po wielokroć zabiera dużo czasu. Java ma dużą społeczność, która stworzyła wiele bibliotek, pomagających w takich sytuacjach zwiększyć produktywność, eliminując potrzebę pisania tego samego kilka razy oraz dostarczając narzędzia do rozwiązywania typowych problemów z Javą. W tym artykule omówimy przykłady takich bibliotek a tutaj poczytasz o najpopularniejszych frameworkach.
Lombok
Masz dość klas, które mają w zasadzie tylko standardowe metody, takie jak gettery, setery, konstruktory, nadpisane metody equal itp.? Cóż, Lombok jest dla Ciebie. Większość IDE może automatycznie generować gettery i setery za pomocą jednego kliknięcia przycisku, ale różnica polega na tym, że IDE generuje te metody w samym pliku .java, a tymczasem Lombok generuje wszystkie metody bezpośrednio do pliku klasy. Zastępuje po prostu treść tych metod odpowiednimi adnotacjami.
Na przykład użycie @Log4j
pozwala uniknąć konieczności inicjalizowania zmiennej rejestrującej do logów w pliku klasy a zamiast tego możesz skoncentrować się na swojej logice biznesowej. Kod z użyciem Lomboka jest znacznie łatwiejszy do odczytania.
MapStruct
Czy używasz architektury wielowarstwowej w swoim projekcie Java? Jeśli tak, zdecydowanie powinieneś pomyśleć o użyciu MapStruct. W architekturze wielowarstwowej wszystkie warstwy aplikacji są luźno powiązane, więc będą chwile, kiedy będziesz musiał mapować swój obiekt, który żyje w jednej warstwie, na obiekt innej warstwy.
Typowym przykładem może być sytuacja, w której encje poddane persystencji mają być odwzorowane na DTO w warstwie aplikacji. Mapowanie jednego POJO z innym POJO może wymagać dużej ilości w sumie mało odkrywczego kodu. Jeśli musisz zmapować dwie klasy to prawdopodobnie napiszesz klasę konwersji (mapper), która będzie miała funkcję pozwalającą pobrać jeden obiekt jako dane wejściowe i zwrócić inny obiekt jako dane wyjściowe – i odwrotnie. A Mapper na to:
@Mapper
public interface CarToCarDTOMapper
{
CarDTO map(Car car);
}
Naprawdę nie będziesz musiał implementować tego interfejsu, MapStruct zrobi to automatycznie za Ciebie. Co więcej, jeśli w przyszłości zdecydujesz się dodać jeszcze 1 nowe pole, powiedzmy kolor samochodu, w klasie encji, możesz dodać to samo pole w DTO i naprawdę nie będziesz musiał dokonywać żadnych zmian w klasie Mapper.
Guava
Guava to zestaw podstawowych bibliotek Java od Google, który obejmuje nowe typy kolekcji (takie jak multimap i multiset), niemutowalne kolekcje, bibliotekę grafów i narzędzia do współbieżności, haszowania i wiele więcej. Jest szeroko stosowany w większości projektów Java w Google a także przez wiele innych firm.
Guava ma narzędzia, które mogą pomóc w rozwiązaniu nie tylko prostych problemów w Javie, ale także bardziej złożonych. Z Guawą łatwo jest przekonwertować mapę na stringa. Rozwiązania większości problemów związanych z buforowaniem, współbieżnością, czy jakimkolwiek innym popularnym zagadnieniem znajdziesz w bibliotece Guawy.
Feign
Jeśli pracujesz jako programista Java, z pewnością napotkałbyś sytuacje, w których musisz skorzystać z jakiegoś REST API. Istnieje wielu klientów HTTP, takich jak OkHttpClient, których można używać ale zwykle wymagają dużej ilości kodu. W RestTemplate jest to bardzo proste, a odpowiedź jest konwertowana na nasz obiekt, którego możemy faktycznie użyć. Ale nadal, jeśli wywołujemy wiele REST API musimy pobrać dany adres URL i wywołać REST API programowo.
A tak to wygląda w Feign:
@FeignClient(name="content-service", url="127.0.0.1")
public interface CarService {
@RequestLine("GET cars/{carNumber}")
String getCarByType(@Param("carType") String carNumber);
}
Sprawdź oferty pracy na TeamQuest
Hibernate
Czy nie lubisz pisania zapytań SQL w swoim kodzie? Czy czasami zapominasz o zamknięciu połączenia do bazy danych po uruchomieniu zapytania? To Hibernate dla Ciebie. Kiedy próbujesz uzyskać dostęp do bazy danych, musisz się napisać: otworzyć połączenie, uruchomić zapytanie, przekonwertować zestaw wyników na encje i zamknąć połączenie, a poza tym musisz także pisać możliwie wydajne zapytania. Jeśli będziesz używać Hibernate, nie będziesz musiał martwić się żadną z powyższych rzeczy.