Integracja Scala + Spring

Integracja Scala + Spring
Gustlik44
  • Rejestracja:około 5 lat
  • Ostatnio:4 miesiące
  • Postów:11
0

Uczę się Scali i mam problem podczas tworzenia aplikacji springowej. Wszystko jest OK do momentu używania scalowych kolekcji - nie jestem w stanie odnieść się do nich w systemie szablonów (używam Thymelefa) i nie są one serializowane do JSONa. Rozwiązanie z ręcznym zmienianiem na kolekcje z java.utils nie zdaje egzaminu, bo wymaga de facto tworzenia dodatkowych klas, które mają pola z kolekcjami javowymi zamiast scalowych.

Próbowałem używać różnych bibliotek, ale udało mi się stworzyć JSONa albo dla klasy bez kolekcji, ale dla samej czystej kolekcji. W Scala Cookbook jest przykład z użyciem Lift-JSON, ale tam dla każdej klasy trzeba przygotować osobny konwerter.

Możecie polecić jakieś rozwiązanie które działałoby automatycznie, tzn. dla każdej klasy nie byłoby konieczne przygotowanie osobnego konwertera? I czy jest jakiś sposób na odniesienie w Thymeleafie do klas zawierających scalowe kolekcje?

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
2

Dlaczego to robisz? Spring działa źle nawet z javą, ale ze Scalą to już totalny dramat będzie - nie rób tego.
W scali masz fajne biblioteki http4s, akka-http, (do tego tapir) - Spring nie ma sensu żadnego.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 2x, ostatnio: jarekr000000
discoStar
Jaką bibliotekę polecasz do uwierzytelniania i autoryzacji? W akka-http jest taki moduł, ale mało przykładów w dokumentacji, dlatego zastanawiam się nad użyciem tego.
Gustlik44
  • Rejestracja:około 5 lat
  • Ostatnio:4 miesiące
  • Postów:11
0

Wolałbym zostać przy Springu, bo w tym środowisku będę pracował, więc ogarnięcie go nieco bardziej byłoby wskazane (np. Spring Security). Frameworki typowo scalowe chciałem ogarnąć w drugiej kolejności.
W sumie podpinam się do pytania discoStar, bo frameworka zamierzam użyć póki co tylko do wystawienia endpointów i zabezpieczenia aplikacji (logowanie użytkowników).

Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około 4 godziny
  • Postów:1875
1

Wszystko się da, pytanie po co. Scala ma swój oddzielny ekosystem, wiec takiego połączenia nie spotkasz w praktyce. Będziesz rozwiązywać jakieś sztuczne problemy związane z tym, że to Scala a nie Java/Kotlin. Ciężko Ci będzie znaleźć pomoc na Stacku czy tutaj.

Choose right tools for the job.


”Engineering is easy. People are hard.” Bill Coughran
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:21 minut
0

Obstawiam, że integrację kolekcji Scalowych ze Springiem można zrobić analogicznie do integracji vavr.io ze Springiem (są równie niekompatybilne). Z tym że nie znam się ani na jednym ani na drugim :)


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit
Charles_Ray
Gdyby tylko o kolekcje chodziło... ;)
Wibowit
Zasugerowałem się postem samego OPa: Wszystko jest OK do momentu używania scalowych kolekcji.
Gustlik44
  • Rejestracja:około 5 lat
  • Ostatnio:4 miesiące
  • Postów:11
0

Z Vavrem jest w sumie dokładnie ta sama historia :)

Wiem, że odbiegam od głównego tematu, ale czy znacie jakieś dobre materiały do nauki Akka? Czy najlepiej polegać na oficjalnej dokumentacji?

DQ
Kiedyś czytałem https://www.manning.com/books/akka-in-action?query=Akka i było całkiem ok. Teraz już raczej lekko przestarzała pod względem API
NN
NN
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 4 lata
  • Postów:239
0

To, co chcesz zrobić będzie brzydkie i ciężkie w utrzymaniu. Miałem do czynienia z projektem scalowym pisanym a'la Java (Spring, JUnit, Maven) i wszyscy na to narzekali, przepisali do Javy jak tylko dostali czas.

KamilAdam
syndrom sztokholmski
Gustlik44
  • Rejestracja:około 5 lat
  • Ostatnio:4 miesiące
  • Postów:11
0

Null null, mógłbyś rozwinąć temat z czym były największe problemy? Myślałem, że w Scali można pisać podobnie jak w Javie (tylko bardziej zwięźle podobnie jak w Kotlinie) + iść stopniowo w stronę kodu coraz mocniej funkcyjnego i stosować bardziej zaawansowane konstrukcje języka.

Sprawdziłem Vavra i okazuje się, że jest moduł Jacksonowy, który pozwala na łatwą serializację do JSONa - działa w połączeniu z kolekcjami i innymi konstrukcjami vavrowymi.

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:21 minut
0

Jeśli bardzo chcesz iść w stronę Springa (nie oceniam w tym poście słuszności tego podejścia) to prawdopodobnie da się przerobić ten moduł do obsługi Vavra na moduł do obsługi kolekcji Scalowych. Scala ma wbudowane adaptery konwertujące kolekcje między API Javowym i Scalowym: https://docs.scala-lang.org/overviews/collections/conversions-between-java-and-scala-collections.html


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit
DQ
  • Rejestracja:prawie 10 lat
  • Ostatnio:7 miesięcy
  • Postów:141
2

Spring po prostu nie działa z Scala dobrze i musisz się liczyć że co rusz to będą problemy. Jeśli chcesz coś "sparingowego" to może warto zainteresować się Play?

Ogólnie dużo osób które przechodzą z Javy używa Scali w bardzo podobny sposób do tego im znanego i wychodzi "Scava". Nie ma w tym nic złego, nie bez powodu ten język wspiera dwa paradygmaty. Nie mniej, jeśli chcesz rzeczywiście wykorzystać potencjał scali to warto uczyć się innych podejść oraz odrzucić Springa - jego raczej nie zobaczysz w żadnym "normalnym" projekcie scalowym.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.